2011-01-11 90 views
0

我有局部視圖,顯示Categories的列表。我想在任何頁面上放置這種局部視圖,但是我想讓它調用服務並自己獲取類別的列表,而不必在每個控制器操作中都這樣做。像webforms,你可以在其中放置一個代碼隱藏。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模型,並顯示一個列表。正如你所看到的,Index頁面可以正常工作,但我不想在Details頁面再次調用它。有沒有辦法讓我自己對GetCategories()服務進行局部視圖呼叫?

回答

3

使用Html.RenderAction - 爲局部視圖提供自己的控制器操作。

+0

因此,我做了一個操作,返回一個局部視圖並調用renderaction? – 2011-01-11 04:33:46

2

您還應該使用屬性[ChildActionOnly]標記部分操作。

0

DVark,

作爲公認的答案注意到,您的方案,是的RenderAction最合適的。

我想我會鏈接下蒸餾的話題我的思維一點的文章(即當使用的RenderPartial VS的RenderAction):

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

希望它有助於

[編輯] - 旁白。大約一年前,我因讚賞RenderPartial而不欣賞RenderAction的力量而陷入了一些傷害。結果,我用大量的局部視圖來散佈共享的視圖空間,以便從各種來源訪問它們。故事的寓意:在種植你的國旗之前瞭解你的'領土'。

相關問題