0

对于我网站上的某些页面,例如登录页面,我希望用户看到login.htm,而不是/Home/Login.

我试过创建这样的路线:

routes.MapRoute(
    name: "LoginScreen",
    url: "login.htm",
    defaults: new { controller = "Home", action = "Login" }
    );

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

每当我尝试访问 /login.htm 时,都会收到 404。

4

2 回答 2

0

这里还有其他答案用于将静态页面路由到控制器(例如,带有扩展名的 url 没有被路由处理),但我会问你为什么要这样做?

用户通常不关心他们正在访问的 url,通过这样做,您实际上正在远离 mvc 的好处之一,即无扩展路由

更新

看看 IIS 中的 Url Rewriting ( http://www.iis.net/learn/extensions/url-rewrite-module/iis-url-rewriting-and-aspnet-routing )

您要么必须捕获对 .htm(l) 页面的所有请求,并有一些逻辑来确定将它们发送到哪里,要么您将为每个想要的 .htm(l) 页面设置一个单独的重写规则映射到控制器动作

于 2013-06-24T09:54:16.937 回答
0

只要上面没有其他路由LoginScreen并且控制器和操作名称正确,那么这应该可以正常工作。

如果您确实有其他路由映射,请将它们注释掉并重试。也许另一条路线正在干扰它。

于 2013-06-24T13:21:28.850 回答