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