是否可以在不在Controller中创建Action的情况下获取/渲染View?我有很多视图,我不需要传递任何模型或视图包变量和我的东西,它只用于创建我的视图名称的空动作是无用的。
答案 0 :(得分:3)
您可以创建自定义路由,并在通用控制器中处理它:
在你的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);
}
}
然后当要求这样的网址时:
http://..../Generic/ViewName
将呈现带有提供名称的视图。
当然,你可以改变这个想法,使其适应你的情况。例如:
routes.MapRoute(
"GenericRoute", // Route name
"{controller}/{viewName}", // URL with parameters
new { action = "RenderView", }
);
在这种情况下,所有控制器都需要实现RenderView,并且网址为http://.../ControllerName/ViewName
。
答案 1 :(得分:0)
如果这些视图是属于与操作对应的视图的一部分视图,则可以在主视图中使用@Html.Partial
来呈现部分视图而不执行任何操作。
例如:
@Html.Partial("MyPartialName")
答案 2 :(得分:0)
在我看来,这是不可能的,至少你可以创造
public ActionResult yourView()
{
return View();
}