我有以下MapRoute可以正常工作并路由到控制器“ Hotel”
routes.MapRoute("Hotel", "en/hotels/london/victoria/my_hotel_name/",
new { controller = "Hotel", action = "Index" }, namespaces: new[] { "UrlRouter.Router.Controllers" } );
但是,如果用户在路径中输入文件名index.asp,则它不会路由到控制器,而只是将实际内容加载到.ASP文件中,这是我不想要的。我希望它路由到控制器,以便我可以控制返回给用户的内容。
我尝试的路线是
routes.MapRoute("Hotel", "en/hotels/london/victoria/my_hotel_name/index.asp",
new { controller = "Hotel", action = "Index" }, namespaces: new[] { "UrlRouter.Router.Controllers" } );
答案 0 :(得分:0)
经过进一步调查,我发现了以下作品。添加web.config
<modules>
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
然后在注册路线中
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.RouteExistingFiles = true;
routes.MapRoute("Hotel", "en/hotels/london/victoria/my_hotel_name/{*.*}",
new { controller = "Hotel", action = "Index", }, namespaces: new[] { "UrlRouter.Router.Controllers" });
}
这使我可以将这两个URL都路由到酒店控制器并返回MVC视图
www.mydomain.com/zh-CN/hotels/london/victoria/my_hotel_name /
和
www.mydomain.com/zh-CN/hotels/london/victoria/my_hotel_name/index.asp
如果有人有更好的建议,请发表您的答案。