在ASP.NET MVC中为局部视图创build控制器

我如何创build一个单独的控制器和模型的部分视图? 我希望能够把这个局部视图放在网站的任何地方,所以它需要它自己的控制器。 我目前正在渲染局部

@Html.Partial("_Testimonials") 

为什么不使用Html.RenderAction()

然后你可以把下面的任何控制器(甚至为它创build一个新的控制器):

 [ChildActionOnly] public ActionResult MyActionThatGeneratesAPartial(string parameter1) { var model = repository.GetThingByParameter(parameter1); var partialViewModel = new PartialViewModel(model); return PartialView(partialViewModel); } 

然后你可以创build一个新的局部视图,并让你的PartialViewModel成为它的inheritance。

对于Razor,视图中的代码块将如下所示:

 @{ Html.RenderAction("Index", "Home"); } 

对于WebFormsViewEngine,它看起来像这样:

 <% Html.RenderAction("Index", "Home"); %> 

它不需要自己的控制器。 您可以使用

 @Html.Partial("../ControllerName/_Testimonials.cshtml") 

这使您可以从任何页面呈现部分。 只要确保相对path是正确的。

如果是我,我会简单地创build一个具有单一动作的新控制器,然后使用RenderAction代替部分:

 // Assuming the controller is named NewController @{Html.RenderAction("ActionName", "New", new { routeValueOne = "SomeValue" }); } 

最重要的是,创build的动作必须返回部分视图,请参见下文。

 public ActionResult _YourPartialViewSection() { return PartialView(); }