在ASP.NET MVC中是否可以在不使用create Action的情况下呈现View?

时间:2013-12-12 15:07:25

标签: asp.net-mvc-4

是否可以在不在Controller中创建Action的情况下获取/渲染View?我有很多视图,我不需要传递任何模型或视图包变量和我的东西,它只用于创建我的视图名称的空动作是无用的。

3 个答案:

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