2011-01-11 88 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的力量而陷入了一些伤害。结果,我用大量的局部视图来散布共享的视图空间,以便从各种来源访问它们。故事的寓意:在种植你的国旗之前了解你的'领土'。

相关问题