MVC 3.0 Maproute编码

我正在写一个新的MVC应用程序; 我想对路由进行一些更改以将部门名称添加到URL。

以下是由VS 2012生成的内容。

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}")

    routes.MapRoute( _
        name:="Default", _
        url:="{controller}/{action}/{id}", _
        defaults:=New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional} _
    )

我想在路径的开头传递部门名称。 恩。

http:// localhost:/ hr / Home / Contact

http:// localhost / hr / Home / About

http:// localhost / finance / Home / Contact

http:// localhost / finance / Home / About

http:// localhost / marketing / Home / Contact

http:// localhost / marketing / Home /关于

而不是默认页面:

http:// localhost / Home /关于http:// localhost / Home / Contact


这应该是非常简单的; 将department添加到路线的开始处:

routes.MapRoute( _
    name:="DepartmentRoute", _
    url:="{department}/{controller}/{action}/{id}", _
    defaults:=New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional} _
)

您可能还想添加一个约束来确保它只匹配部门名称:

    constraints:=New With { .department = @"[hr|finance|marketing]" }

有一种方法可以在URL中包含部门名称。 一种方法是使用属性RouteData.Values,如下所示:

string department = RouteData.Values["department"];

另一种方式更优雅。 如果我们使用与URL模式变量匹配的名称为我们的action方法定义参数,那么MVC框架会将从URL获得的值作为参数传递给action方法。

   public ViewResult Index(string department) {
      ViewBag.Department = department;
      return View();
   }
链接地址: http://www.djcxy.com/p/57855.html

上一篇: MVC 3.0 Maproute Coding

下一篇: ASP.NET MVC Routing and URL.Action