【问题标题】:Route mappings are broken suddenly. How to fix?路由映射突然中断。怎么修?
【发布时间】:2011-09-23 08:15:29
【问题描述】:

我的 MVC 应用的路由映射突然中断。

这里是路线映射

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}", // URL with parameters
            new { controller = "Home", action = "Index" } // Parameter defaults
        );
    }

这是控制器代码

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    public string Login()
    {
        return "Login";
    }
}

我可以使用http://localhost:49637/ 访问索引视图,但我无法通过http://localhost:49637/Login 访问登录视图。如果我尝试通过http://localhost:49637/Home/Login 访问登录视图,它可以工作。

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    您没有匹配的路由 - 'http://localhost:49637/Login' 因为您的唯一路由同时查找控制器和操作值,并且您只传递一个值,因此 MVC 正在尝试路由您到不存在的“登录”控制器。我尚未对此进行测试,但添加类似这样的内容应该可以解决您的问题-

    routes.MapRoute(
        "Login",
        "Login",
        new { controller = "Home", action = "Login" }
    );
    

    请记住,asp.net MVC 将使用它找到的第一个匹配路由,因此您需要将此路由放在 RegisterRoutes 函数中的“默认”路由之上。

    【讨论】:

    • 我刚刚发现了问题。这是因为我对 MVC 的了解不足。无论如何,谢谢。
    • 如果您认为他的答案解决了您的问题,请将其标记为正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 2013-05-21
    • 1970-01-01
    相关资源
    最近更新 更多