Asp.net mvc 4 是否可以在ASP.NET MVC中渲染视图而不创建操作?

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}"

是否可以在不在控制器中创建操作的情况下获取/渲染视图?我有很多视图,不需要传递任何模型或viewbag变量,我认为,只创建带有视图名称的空操作是没有用的。

如果这些视图是与操作相对应的视图的一部分,您可以在主视图中使用
@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模式访问这些视图?可能重复