【问题标题】:Is it possible to render View without create Action in ASP.NET MVC?是否可以在 ASP.NET MVC 中不创建操作而呈现视图?
【发布时间】:2013-12-12 15:07:25
【问题描述】:

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

【问题讨论】:

标签: asp.net-mvc-4


【解决方案1】:

您可以创建自定义路由,并在通用控制器中处理它:

在您的 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

将呈现具有提供的名称的视图。

当然,您可以对这个想法进行修改以适应您的情况。例如:

routes.MapRoute(
    "GenericRoute", // Route name
    "{controller}/{viewName}", // URL with parameters
    new { action = "RenderView",  }
);

在这种情况下,你所有的控制器都需要实现一个RenderView,并且url是http://.../ControllerName/ViewName

【讨论】:

    【解决方案2】:

    在我看来这是不可能的,至少你可以创造的是

    public ActionResult yourView()
    {
        return View();
    }
    

    【讨论】:

      【解决方案3】:

      如果这些视图是对应于动作的视图的一部分的局部视图,您可以在主视图中使用@Html.Partial 来呈现不带动作的局部视图。

      例如:

      @Html.Partial("MyPartialName")
      

      【讨论】:

      • 第一个参数需要给出partial的名称,如果需要模型,则直接作为Model传入。
      猜你喜欢
      • 1970-01-01
      • 2013-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-07
      • 1970-01-01
      • 2014-03-13
      • 2015-04-24
      相关资源
      最近更新 更多