3

バックグラウンド

MVC3 Web アプリケーションで DOCX に変換するために、XML ドキュメントを XHTML ドキュメントに変換する必要があります。XML データの周りの段落テキストをマージします。段落テキストは DB から抽出されます。以前は、確かに 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 の生成を容易にするものではありません。また、名前空間を使用した複雑な XML のトラバーサルは、LINQ-to-XML と比較して XPath を使用すると、はるかに自然で簡潔になります。

Razor テンプレートがテキストと HTML をレンダリングするのと同じように、XSLT を実行するジョブを実行するカスタム ビュー エンジンを生成することはそれほど難しくありません。これにより、ASP.NET MVC アプリケーションの範囲内で XSLT レンダリングを適切かつ自然に統合できます。

于 2013-02-04T01:34:11.153 に答える
0

XML の構造を模倣する ViewModel を作成できるかもしれません。

そうすれば、ViewBag に依存せずに、ビューモデルのプロパティとコレクションをループして、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 に答える