Asp.net mvc 无控制器更新的ASP.NET MVC局部视图

Asp.net mvc 无控制器更新的ASP.NET MVC局部视图,asp.net-mvc,Asp.net Mvc,我有一个局部视图,显示了类别的列表。我希望将该部分视图放在任何页面上,但我希望它能够调用服务并自己获取类别列表,而无需在每个控制器操作中都这样做。类似webforms的东西,你可以在上面放一段代码 例如 行动 public ActionResult Index() { JobListViewModel model = new JobListViewModel(); model.Categories= jobService.GetCategories

我有一个局部视图,显示了
类别的列表
。我希望将该部分视图放在任何页面上,但我希望它能够调用服务并自己获取类别列表,而无需在每个控制器操作中都这样做。类似webforms的东西,你可以在上面放一段代码

例如

行动

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

我创建了一个分部,它将采用
模型.Categories
模型并显示一个列表。正如您所看到的,索引页面可以正常工作,但我不想在详细信息页面中再次调用它。有没有一种方法可以让我的partialview调用自己的
GetCategories()
服务?

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

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

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

还应使用属性[ChildActionOnly]标记部分操作

DVark

如公认答案中所述,对于您的场景,渲染是最合适的

我想我应该链接一篇小文章,详细阐述我对该主题的想法(即何时使用RenderPartial vs RenderAction):

希望能有帮助

[编辑]-作为旁白。大约一年前,我因为没有意识到渲染的力量而陷入了困境,我支持渲染部分。因此,我在共享视图空间中散布了许多partialview,以便从各种来源访问它们。这个故事的寓意是:在插国旗之前先了解你的“领土”。

如公认答案中所述,对于您的场景,渲染是最合适的

我想我应该链接一篇小文章,详细阐述我对该主题的想法(即何时使用RenderPartial vs RenderAction):

希望能有帮助


[编辑]-作为旁白。大约一年前,我因为没有意识到渲染的力量而陷入了困境,我支持渲染部分。因此,我在共享视图空间中散布了许多partialview,以便从各种来源访问它们。这个故事的寓意是:在插上旗帜之前先了解你的“领地”。

因此,我做了一个返回局部视图的动作,并调用renderaction?Right-除了使用单独的控制器动作方法外,这与RenderPartial差不多。因此,我做了一个返回局部视图的动作,并调用renderaction?Right-除了使用单独的控制器动作方法外控制器动作方法与RenderPartial基本相同。