我正在使用 MVC3、.NET4、C#。
我需要使用 Razor 视图创建一些 XHTML。我通过一个动作来做到这一点。
public ActionResult RenderDoc(int ReportId)
{
//A new document is created.
return View();
}
然后我需要从中获取输出并将其转换为 Word Doc。我正在使用第 3 方组件来执行此操作,它需要读取用于转换为 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:基于达林的回答
我需要进一步分类,我希望通过调整达林的代码来达到我的目的。
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);
}
}
以上更接近我的需要。请注意第 3 方 WordDocument 类型。所以仍然存在如何将“strXhtmlDocument”放入“Response.OutputStream”的问题?