2009-04-03 13 views
4

すべてのプレビューリリースからのmvcについての情報と公式リリースの混乱のため、viewusercontrolsの処理方法は非常に混乱しています。 この例を実装する方法を教えてください:ASP.Net MVC ViewUserControl with MVC 1.0を使用したコントローラー

私のウェブサイトのいくつかのページに表示する必要がある予定のリストがあります。したがって、私はViews \ Sharedフォルダ内に新しいViewUserControl(ListEvents.ascx)を配置しました。

私はこのように私のホーム/ Indexビューにレンダリングするために、この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> 

しかし、それは非常にスマートなことのように見えない、ビュー内から新しいモデルを作成するか?または私はここで間違っていますか?私は検証ステートを渡すこともできず、したがってヌルパラメータも渡せません。 代わりに、このデータをViewData []メンバーに保存することもできますが、私のviewusercontrolはその親のViewDataに依存していないはずです!

これには非常に簡単な答えがあると確信しています。私はこの問題についてウェブを閲覧していますので、共有してください。

ありがとうございます!

簡易回答: viewusercontrolは、モデルが常駐するビューから常にモデルを受け取る必要があります。これを回避するには、codebehindファイルをviewusercontrolに追加するなどして、MVCパターンを破壊します。

答えて

2

デフォルトでは、ページと同じモデルが使用されます。 RenderPartialの各インスタンスにモデルを提供する場合は、ブログアプリケーションで複数のエントリをレンダリングするような状況が考えられます。

+0

はい、しかし、私のviewusercontrolのモデルは、それが存在するページのモデルに依然として依存しています。そしてそれはまさにそうです。そして、それはあなたのページモデルのコレクションから各モデルをフェッチすることができます。私が避けたいもの。 – Peter

+0

実際には、モデル自体ではなく、モデルの単一のプロパティに依存します。 2つの全く異なるモデルが同じプロパティを持つ可能性があります。 –

+0

ビューにviewusercontrolを実装する必要があるたびに、そのビューのコントローラがviewusercontrolが使用するモデルでビューのモデルを追加することを確認する必要があります。 – Peter

関連する問題