Gre*_*ire 5 asp.net-mvc asp.net-mvc-routing
如何使用我在Global.asax中定义的路由获取相对Url的控制器名称?
例:
如果我有这样的路线违规:
routes.MapRoute(
"Default", // Route name
"{language}/{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "", language = "en" }
Run Code Online (Sandbox Code Playgroud)
从字符串"〜/ en/products/list"我想要产品(控制器名称).有没有现成的方法已经这样做了?
您可能应该添加另一条路径,例如George建议但如果您真的需要从路由派生的控制器值,您可以在控制器操作方法中执行此操作:
var controller = (string)RouteData.Values["controller"];
Run Code Online (Sandbox Code Playgroud)
请参阅 Stephen Walther 的博客文章ASP.NET MVC Tip #13 \xe2\x80\x93 对自定义路由进行单元测试
\n\nMvcFakes 项目有一个旧的 System.Web.Abstractions 参考。因此,您必须将其替换为新的\n并重新编译该项目以获取 MvcFakes.dll。
\n\n这是我的代码:
\n\npublic string getControllerNameFromUrl()\n{\n RouteCollection rc = new RouteCollection();\n MvcApplication.RegisterRoutes(rc);\n System.Web.Routing.RouteData rd = new RouteData();\n var context = new FakeHttpContext("\\\\" + HttpContext.Request.Url.AbsolutePath);\n rd = rc.GetRouteData(context);\n return rd.Values["action"].ToString();\n}\nRun Code Online (Sandbox Code Playgroud)\n\n在我上面的代码中,“MvcApplication”是 Global.asax 中的类名。
\n\n祝你好运 !
\n| 归档时间: |
|
| 查看次数: |
15803 次 |
| 最近记录: |