2009-04-16 17 views
0

ハードレンダリングされたテーブルをjqGrid [XML]に置き換えているMvcアプリケーションがあります。ASP.NET MVC + jqGrid組み込みリンクのベストプラクティス

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

私はRenderPartialExtensionsを調べていましたが、そのためにHtmlHelperインスタンスが必要です。さらに、Brail Viewエンジンを使用しているので、動作するかどうかはわかりません。

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

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

答えて

0

アーキテクチャの多くを明らかにし、どのように私はそれを解決することになりました。私は次のプロジェクト/アセンブリを持っている:

  1. ビジネスは
  2. VB XMLデ/シリアルライブラリVBのXMLアセンブリが扱ったビジネス・オブジェクトをシリアライズ扱う
  3. ASP.NET MVCプロジェクト

オブジェクトビジネス(#1)モデルのみ。

<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> 

をだから私はこのような出力のXElementが何かだろう私はそれを働かせましたが、私は明らかに懸念の良い分離ではないコントローラ内のすべてのactionHtmlを生成しなければならなかった、私はすべての私のHtmlHelperメソッドなどを失った。だから私は「正しい」方法、それを解決することになった方法です:

  1. Webフォームビューを使用して(私は私のページの点字ビューを使用)[私はXMLに設定したContentTypeのページ属性を使用することができます]。
  2. 生のビジネスオブジェクトのコレクションをモデルデータとして渡します。
  3. ループ出力を視野に、各請求書actonHtml要素を構築するモデルコレクション、(それゆえ私のHtmlHelperのメソッドを取得し、そのような)
  4. 私は単に私のVBのXMLライブラリを呼び出すと行うことができ、実際のビジネスの要素:invoice.ToXml().Elements().ToString()と私は元気です。

さらに私は、私はちょうど、実際のページにその情報を渡すだけの要素データの出力を心配することができますので、コンテンツ領域内のすべてのレコード数と、そのようなを持ってjqGridマスターページを作成し、これはより多くの再利用可能にします。

0

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

例:

<%= Html.RenderXML(Url.Content("~/App_Data/waiver.xml"), 
        Url.Content("~/Content/styles/waiver.xsl")) %> 
関連する問題