Asp.net mvc 4 是否可以在ASP.NET MVC中渲染视图而不创建操作?
是否可以在不在控制器中创建操作的情况下获取/渲染视图?我有很多视图,不需要传递任何模型或viewbag变量,我认为,只创建带有视图名称的空操作是没有用的。如果这些视图是与操作相对应的视图的一部分,您可以在主视图中使用Asp.net mvc 4 是否可以在ASP.NET MVC中渲染视图而不创建操作?,asp.net-mvc-4,Asp.net Mvc 4,是否可以在不在控制器中创建操作的情况下获取/渲染视图?我有很多视图,不需要传递任何模型或viewbag变量,我认为,只创建带有视图名称的空操作是没有用的。如果这些视图是与操作相对应的视图的一部分,您可以在主视图中使用@Html.partial来呈现不带操作的部分视图 例如: @Html.Partial("MyPartialName") routes.MapRoute( "GenericRoute", // Route name "{controller}/{viewName}"
@Html.partial
来呈现不带操作的部分视图
例如:
@Html.Partial("MyPartialName")
routes.MapRoute(
"GenericRoute", // Route name
"{controller}/{viewName}", // URL with parameters
new { action = "RenderView", }
);
在我看来这是不可能的,至少你可以创造
public ActionResult yourView()
{
return View();
}
您可以创建自定义路由,并在通用控制器中进行处理: 在RouteConfig.cs中:
routes.MapRoute(
"GenericRoute", // Route name
"Generic/{viewName}", // URL with parameters
new { controller = "Generic", action = "RenderView", }
);
然后实现这样一个控制器
public GenericContoller : ...
{
public ActionResult RenderView(string viewName)
{
// depending on where you store your routes perhaps you need
// to use the controller name to choose the rigth view
return View(viewName);
}
}
然后,当请求这样的url时:
http://..../Generic/ViewName
将呈现具有提供名称的视图
当然,你可以改变这个想法,使之适应你的情况。例如:
@Html.Partial("MyPartialName")
routes.MapRoute(
"GenericRoute", // Route name
"{controller}/{viewName}", // URL with parameters
new { action = "RenderView", }
);
在这种情况下,所有控制器都需要实现RenderView,url为
http://.../ControllerName/ViewName
您需要将分部的名称作为第一个参数,然后直接将模型作为模型传入(如果它需要模型)。要使用什么Url模式访问这些视图?可能重复