すべてのプレビューリリースからのMVCに関するすべての情報と、1つの公式リリースとの間の混乱のため、viewusercontrolsの処理方法が非常に混乱しています。ですから、この例を実装する方法を教えてください。
私のウェブサイトのいくつかのページに表示する必要がある今後のイベントのリストがあります。したがって、Views \ Sharedフォルダー内に新しいViewUserControl(ListEvents.ascx)を配置しました。
このListEvents.ascxに、ホーム/インデックスビューで次のようにレンダリングするように要求しています。
<p>
Here's a list of events:
<% Html.RenderPartial("ListEvents");%>
</p>
モデルをこのviewusercontrolに渡すにはどうすればよいですか?私はこれができることを知っています:
<p>
Here's a list of events:
<% Html.RenderPartial("ListEvents", (new Model.Services.EventService(null)).ListEvents());%>
</p>
しかし、ビューの内側から新しいモデルを作成するのは、それほど賢明なことではないようです。それとも私はここで間違っていますか?私はvalidationstateを渡すことさえできないので、nullパラメーターです。したがって、別のオプションは、このデータをViewData []メンバーに格納することですが、私のviewusercontrolは、その親のViewDataに依存することは想定されていません。
これには非常に簡単な答えがあると確信しています。この問題についてWebを閲覧し終えたので、共有してください。
ありがとう!
簡単な答え:viewusercontrolは、それが存在するビューから常にそのモデルを受け取る必要があります。これを回避するには、コードビハインドファイルをviewusercontrolに追加するなど、MVCパターンを壊します。