3

背景

我需要将 XML 文档转换为 XHTML 文档,以便在 MVC3 Web 应用程序中转换为 DOCX。我将在 XML 数据周围的段落文本中进行合并。段落文本是从数据库中提取的。在过去,我肯定会使用 XSLT 来转换 XML。但是我现在意识到 Razor 提供了一个非常引人注目/更好的选择。我的 XSLT 现在有点生疏了,无论如何我都会在我的 MVC 应用程序中大量使用 Razor。那么Razor是要走的路吗?

如果剃须刀是要走的路,那么我将不胜感激如何将其包含在控制器中。我最初的伪代码想法是:

  ViewBag.MyXMLDoc = DocXML;    
  var MyDocXHtml = View("XHtmlRazorRenderer", ParagraphTextListModel);

想法非常感谢。

编辑

MyDocument = MyDocument.LoadXML("MyDocXML.xml")    
ViewBag.MyDocument = MyDocument;
var MyDocXHtml = View("XHtmlRazorRenderer", ParagraphTextListModel);
4

2 回答 2

2

对于给定的工作,我会坚持使用 XSLT。

请注意,Razor 是一个“通用”文本模板引擎,它不会帮助生成正确的 XML。此外,与 LINQ-to-XML 相比,使用 XPath 遍历具有名称空间的复杂 XML 更加自然和简洁。

生成执行 XSLT 工作的自定义视图引擎并不难,就像 Razor 模板呈现文本和 HTML 一样。这允许在 ASP.NET MVC 应用程序范围内很好地自然地集成 XSLT 呈现。

于 2013-02-04T01:34:11.153 回答
0

也许您可以创建一个模仿 XML 结构的 ViewModel。

那样...您不依赖 ViewBag... 并且可以遍历 viewmodel 属性和集合以使用 Razor 生成 HTML。

应该在控制器上创建视图模型,加载 XML,然后使用 xpath 加载视图模型。

然后,在 Razor 中,使用 ViewModel 生成 HTML。

希望您的 XML 不太复杂。

您的视图模型:

public class MyViewModel{
   public ParsedXMLDoc myXmlData {get; set;}
   public ParagraphTextListModel paragraph {get; set;}
}

在您的控制器中,只需将其MyViewModel作为模型传递给视图。

于 2013-02-04T01:56:48.520 回答