我正在写一个新的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 /联系
http:// localhost / hr / Home / About
http:// localhost / finance / Home / Contact
http:// localhost / finance / Home / About
http:// localhost / marketing / Home / Contact
http:// localhost / marketing / Home / About
而不是默认页面:
http:// localhost / Home /关于 http:// localhost / Home / Contact
答案 0 :(得分:1)
那应该是非常直接的;将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]" }
答案 1 :(得分:0)
一旦您在部门名称中访问部门名称,有两种方法可以访问部门名称。一种方法是使用像这样的属性RouteData.Values:
string department = RouteData.Values["department"];
另一种方式更优雅。如果我们使用与URL模式变量匹配的名称为我们的action方法定义参数,MVC框架会将从URL获取的值作为参数传递给action方法。
public ViewResult Index(string department) {
ViewBag.Department = department;
return View();
}