2011-01-11 27 views
0

Categoriesのリストを示す部分的なビューがあります。その部分的な見方はどのページにも載せたいと思いますが、私はそれをサービスに呼びかけて、カテゴリのリストを取得して、すべてのコントローラアクションでそれを行う必要はありません。あなたがコードビハインドを置くことができるウェブフォームのようなもの。コントローラなしで更新されるASP.NET MVCの部分ビュー

たとえば、

アクション

public ActionResult Index() 
    { 
     JobListViewModel model = new JobListViewModel(); 
     model.Categories= jobService.GetCategories(); 

     return View(model); 
    } 

    public ActionResult Details(int id) 
    { 
     Job job = jobService.GetJob(id); 
     return View(job); 
    } 

私はmodel.Categoriesモデルを取ると、一覧が表示されている部分を作成しました。ご覧のとおり、[インデックス]ページは正常に動作しますが、[詳細]ページでもう一度呼び出す必要はありません。 GetCategories()サービスへの私のパーシャルビューコールを単独で行う方法はありますか?

答えて

3

Html.RenderActionを使用します。これは、部分的なビューに独自のコントローラアクションを与えます。

+0

私は部分的なビューを返し、レンダリングを呼び出すアクションを作成しますか? –

+0

右 - 別のコントローラーアクションメソッドを使用する以外は、RenderPartialとほとんど同じです。 –

2

また、[ChildActionOnly]属性で部分的な処理をマークする必要があります。

0

DVark、

受け入れ答えで述べたように、自分のシナリオのために、RenderActionが最も適切です。

私は、トピック(すなわちRenderAction対れるrenderPartialを使用する場合)に私の考えを蒸留し、ほとんどの記事をリンクしようと思いました:

http://cbertolasio.wordpress.com/2010/09/21/mvc-html-renderaction-vs-html-renderpartial/

はそれが

[編集]を役に立てば幸い - 脇に。 RenderActionの力に感謝しないで、RenderPartialに賛成して、私はいくつかの擦り傷に巻き込まれました。その結果、私はさまざまなソースからアクセスするために、多くの部分ビューを持つ共有ビュースペースを散らばっていました。物語のモラル:あなたの旗を植える前にあなたの「領土」を知ってください。

関連する問題