如何在 URL 中隐藏控制器名称?
我使用 ASP.NET MVC。
原来的网址是:http://www.sample.com/Users.mvc/UserDetail/9615
“Users”是控制器名称,“UserDetail”是操作名称,“9615”是UserId。
如何隐藏 url 中的控制器名称和操作名称。
像这样:http://www.sample.com/9615
我在 Global.asax.cs 中编写了以下代码来隐藏操作名称:
routes.MapRoute(
"UserDetail", // Route name
"Users.mvc/{UserId}", // URL with parameters
new { controller = "Users", action = "UserDetail", UserId = "" } // Parameter defaults
);
使用上面的代码我隐藏了操作名称并得到了这个 url:http://www.sample.com/Users.mvc/9615
但是我如何隐藏控制器名称并获取此网址:http://www.sample.com/9615
Thanks.
这个想法是一样的。你只做你对动作所做的事情。但是,您的问题是由于 IIS 可能没有将 www.xyz.com/1234 映射到 ASP.NET 运行时这一事实而产生的。为此,在 IIS7 中启用集成模式,在 IIS6 中,在处理程序映射中添加通配符映射,将所有内容映射到 ASP.NET。
要添加通配符映射,请参阅http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx(在该页面中搜索“IIS6 无扩展 URL”)
之后,只需添加一条路线:
routes.MapRoute("UserDetails", "{UserID}/{*name}",
new { controller = "Users", action = "UserDetail" , UserID=""});
这应该可以解决问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)