C# MVC 3.0地图路线编码
我正在编写一个新的MVC应用程序;我想对路由进行一些更改,以便将部门名称添加到URL 以下是VS 2012生成的内容C# MVC 3.0地图路线编码,c#,asp.net-mvc-3,asp.net-mvc-routing,maproute,C#,Asp.net Mvc 3,Asp.net Mvc Routing,Maproute,我正在编写一个新的MVC应用程序;我想对路由进行一些更改,以便将部门名称添加到URL 以下是VS 2012生成的内容 routes.IgnoreRoute("{resource}.axd/{*pathInfo}") routes.MapRoute( _ name:="Default", _ url:="{controller}/{action}/{id}", _ defa
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/About
而不是默认页面:
http://localhost/Home/About
http://localhost/Home/Contact
这应该是非常直截了当的;将
部门
添加到路线起点:
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属性。值如下:
string department = RouteData.Values["department"];
另一种方式更优雅。如果我们使用与URL模式变量匹配的名称为action方法定义参数,MVC框架将把从URL获得的值作为参数传递给action方法
public ViewResult Index(string department) {
ViewBag.Department = department;
return View();
}
谢谢你的快速回复。如何在代码中获取部门名称?它使用相同的代码对吗?@user1621009是的,您可以将其作为参数添加到您的操作方法中。。。或者直接从Route Values对象检索它。DarthVader的建议也是一个很好的考虑。谢谢你这么快的反应。我想你解决了我的问题。