0

ハードレンダリングされたテーブルをjqGrid [XML]に置き換えるMvcアプリがあります。

問題は、行に対して特定のアクションを実行するために、列の 1 つにアクション リンクがあることです。XML で CDATA タグを使用してこれらを複製しました。ただし、問題は、このタグがアクション メソッドで生成されるようになったため、すべての HTML がコントローラー (TagBuilder 内) にあり、これは明らかに良くないことです。

RenderPartialExtensions を調べるつもりでしたが、そのためには HtmlHelper インスタンスが必要です。また、ブレイル ビュー エンジンを使用しているため、それが機能するかどうかもわかりません。

他の人々はこれをどのように処理しましたか?
実際の xml を html のようにレンダリングするビューを作成できると思いますが、各 xml データ ソースのビューを作成する必要があり、既にそれらを持っています。

ご入力いただきありがとうございます。

4

2 に答える 2

0

何を求めているのか正確にはわかりませんが、ビューにレンダリングするXMLデータ(免除、リリースなどの合法的なもの)があります。HtmlHelper拡張ルートを使用して、ドキュメントのURLとそれをHTMLに変換するXSLTスタイルシートを取得する拡張機能を作成しました。LINQ XMLクラスを使用して、MemoryStreamでXMLをHTMLにロードおよびレンダリングします。次に、これを文字列として返し、ビューを介して応答に書き込まれます。HTMLヘルパーにアクセスできない場合は、静的クラス(とにかく拡張機能)の静的メソッドに似たものを記述できますが、拡張機能の構文は使用しません。これは、好きなビューでレンダリングできます。

私のコードの例:

 <%= Html.RenderXML( Url.Content( "~/App_Data/waiver.xml" ),
                     Url.Content( "~/Content/styles/waiver.xsl" ) ) %>
于 2009-04-17T02:25:18.897 に答える
0

アーキテクチャの詳細と、それをどのように解決したかを明確にするため。次のプロジェクト/アセンブリがあります。

  1. ビジネス オブジェクト
  2. VB XML De/Serialization ライブラリ
  3. ASP.NET MVC プロジェクト

VB XML アセンブリは、ビジネス (#1) モデルのみを扱うビジネス オブジェクトのシリアル化を処理します。したがって、次のような XElement を出力します。

<invoice>
   <invoiceId>1234</invoiceId>
   <customer>Hudsucker Industries</customer>
   <otherBusinessData>etc, etc</otherBusinessData>
</invoice>

jqGridを使用していて、特定のアクションに各請求書に要素を追加する必要があるという問題が発生するため、次のようなものが必要です。

<invoice>
   <actionHtml><![CDATA[   ...some HTML such as links... ]]></actionHtml>
   <invoiceId>1234</invoiceId>
   <customer>Hudsucker Industries</customer>
   <otherBusinessData>etc, etc</otherBusinessData>
</invoice>

私はそれを機能させましたが、コントローラーですべての actionHtml を生成する必要がありましたが、これは明らかに懸念事項の適切な分離ではなく、すべての HtmlHelper メソッドなどを失いました。それで、私がそれを「正しい」方法で解決した方法は次のとおりです。

  1. WebForms ビューを使用する (私は自分のページに brail ビューを使用しています) [そのため、ContentType ページ属性を使用して XML に設定できます]。
  2. 生のビジネス オブジェクトのコレクションをモデル データとして渡します。
  3. モデル コレクションをループし、ビュー内の請求書ごとに actonHtml 要素を作成します (したがって、HtmlHelper メソッドなどを取得します)。
  4. 実際のビジネス要素を出力するには、VB XML ライブラリを呼び出して a:invoice.ToXml().Elements().ToString()を実行するだけです。

これをさらに再利用可能にするために、コンテンツ領域にすべてのレコード数などを含む jqGrid マスター ページを作成しました。これにより、その情報を実際のページに渡すだけで、要素データの出力について心配することができます。

于 2009-04-19T23:22:27.483 に答える