【问题标题】:ASP.NET MVC partial view that updates without controller无需控制器即可更新的 ASP.NET MVC 局部视图
【发布时间】:2011-01-11 04:18:09
【问题描述】:

我有一个显示Categories 列表的部分视图。我想将该部分视图放在任何页面上,但我想让它自己调用服务并获取 categories 列表,而不必在每个控制器中都这样做行动。类似于网络表单,您可以在其中放置代码。

例如。

操作

    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);
    }

我创建了一个partial,它将采用model.Categories 模型并显示一个列表。如您所见,索引页面可以正常工作,但我不想在详细信息页面中再次调用它。有没有办法自己对GetCategories() 服务进行部分视图调用?

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    使用 Html.RenderAction - 为局部视图提供自己的控制器操作。

    【讨论】:

    • 所以我做了一个返回局部视图并调用renderaction的动作?
    • 对 - 除了使用单独的控制器操作方法之外,它与 RenderPartial 大致相同。
    【解决方案2】:

    您还应该使用属性 [ChildActionOnly] 标记您的部分操作。

    【讨论】:

      【解决方案3】:

      DVark,

      正如接受的答案中所述,对于您的场景,RenderAction 是最合适的。

      我想我会链接一篇小文章来提炼我对该主题的想法(即何时使用 RenderPartial 与 RenderAction):

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

      希望对你有帮助

      [编辑] - 作为旁白。大约一年前,我因为不欣赏 RenderAction 的力量而陷入了一些困境,而支持 RenderPartial。结果,我在共享视图空间中乱扔了许多局部视图,以便从各种来源访问它们。故事的寓意:在插旗之前先了解自己的“领土”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-25
        • 1970-01-01
        • 2011-09-11
        • 1970-01-01
        • 2012-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多