0

現在、asp.net mvc で比較的複雑なページを構築する最善の方法を検討しています。ページ (およびそのようなページ) には、ショッピング バスケット、最近のニュース ウィジェット、ログイン コントロールなど、多数の「コントロール」が含まれます。言い換えれば、それは非常にコンポーネントベースになります。

私の質問は、asp.net MVC でこのようなものを構築する最良の方法は何ですか? 通常の Web フォームでは、ユーザー コントロールのおかげで答えは簡単で、うまく自己完結できるという事実があります。MVC では、理論的には、すべてのウィジェットに必要なすべてのデータを含むビューモデルを作成し、作成中のページで部分ビューをレンダリングする必要があることを理解しています。別のアプローチは、部分ビューをレンダリングするコントローラーを呼び出すだけで、javascript を使用してウィジェットを「動的に」ロードすることです (jQuery ロードを考えてください)。そうすれば、呼び出されたときにバスケットをレンダリングするバスケット コントローラーを作成できます。もちろん、これはjavascriptに依存しています....

このような状況のベストプラクティスは何ですか?

ありがとう

4

4 に答える 4

1

もちろん、JavaScript を使用してページ セクションにデータを入力することもできますが、その場合、このコンテンツは検索エンジンからアクセスできなくなります (ただし、おそらく気にする必要はありません)。

現在、これらの部分ビューを個別に実行する方法がないことを理解する必要があります。独自のコントローラーと対話してデータを投稿するのと同じように、残りの部分は変更されません (Web フォームとユーザー コントロールで実行できたように)。ポストバックとコントロールの状態を考えると、これらのものはもはや存在しません。あなたの「コントロール」はポストを作成し、コントローラーはリクエストを処理してから、すべての要素の値、状態、およびその他の「ユーザーコントロール」とともに完全なビューを再作成する必要があります。

もちろん、JavaScript で非同期にしない限り。しかし、それはもうアクセシブルなページではなくなります。

于 2009-11-09T09:47:09.883 に答える
0

MvcContribまたはSteveSandersonの「PartialRequest」アプローチからSubControllersを試すことができます。

しかし、私はあなたに警告します-それらの間の通信(部分的な要求、私はサブコントローラーを自分で試していません)はトリッキーになり、巨大な失敗につながる可能性があります。それらが完全に独立していることが完全に確信できる場合にのみ使用してください。

とにかく-それは悪い考えであり、コントローラー/ビューモデルの継承などによって回避する必要があります。

于 2009-11-09T10:03:48.830 に答える
0

いくつかの簡単なチェックを行ったメイン ビュー モデルを送信できます。次に、必要に応じて適切なアクションをレンダリングします。次に、各パーシャルは独自のビューモデルを使用でき、最初にすべてを同じビューモデルに送信する必要はありません。

かみそり:

 @if (model.ShowShoppingCart)
 {
     @Html.Action("Index","ShoppingCart")
 }
 @if (model.blah)
 {
     @Html.Action("Index","blah")
 }
于 2011-11-15T17:42:23.100 に答える
0

MVC についての私の理解は WebForms にはまだ達していませんが、このようなものを ViewModel に含めるのではなく、単に ViewBag に投げ込むという一般的に受け入れられているアプローチはありますか?

于 2011-09-04T14:24:02.203 に答える