我使用MVC3,.NET4,C#。
我需要创建使用Razor视图一些XHTML。 我通过一个动作做到这一点。
public ActionResult RenderDoc(int ReportId)
{
//A new document is created.
return View();
}
然后,我需要从这个输出,并将其转换为Word文档。 我使用的是第三方组件做到这一点,它需要一个“流”或“文件”对于被读为转换为DOC,就像下面的XHTML来源:
document.Open(MyXhtmlStream,FormatType.Html,XHTMLValidationType.Transitional);
我的问题:
什么是调用“RenderDoc”行动并获得结果作为流送入“MyXhtmlStream”的好办法。
非常感谢。
编辑:我有另一个想法!
1)渲染操作来创建一个字符串(XHTMLString)内查看。 我看到这样做对SO的方法。
2)创建一个MemoryStream并把这个字符串转换成它。
Stream MyStream = New MemoryStream("XHTMLString and encoding method");
EDIT2:根据达林的答案
我需要clasyify远一点,我希望通过调整Darin的代码为我的目的,做到这一点。
public class XmlDocumentResult : ActionResult
{
private readonly string strXhtmlDocument;
public XmlDocumentResult(string strXhtmlDocument)
{
this.strXhtmlDocument = strXhtmlDocument;
}
public override void ExecuteResult(ControllerContext context)
{
WordDocument myWordDocument = new WordDocument();
var response = context.HttpContext.Response;
response.ContentType = "text/xml";
myWordDocument.Open(response.OutputStream, FormatType.Html, XHTMLValidationType.Transitional);
}
}
以上是接近我所需要的。 注意第三方WordDocument类型。 所以仍然是如何得到的“strXhtmlDocument”变成了“Response.OutputStream的问题?