【问题标题】:.NET MVC Route not working propely.NET MVC 路由无法正常工作
【发布时间】:2017-06-15 00:12:24
【问题描述】:

我在 .NET 应用程序中定义了我的路由,如下所示:

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

    routes.MapRoute(
        name: "Register",
        url: "Register",
        defaults: new { controller = "Home", action = "Register" }
    );

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

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

这样我就可以有如下路线:

mysite.com/Login
mysite.com/Register
mysite.com/ResetPwd

现在,当我从 mysite.com/Login 成功登录时尝试将用户重定向到仪表板时,其他控制器会出现问题,如下所示:

return RedirectToAction("Index", "Dashboard");

但是我遇到了一个错误:

找不到资源。

我想我现在要为仪表板/索引定义一条路线...但是从那以后我必须手动添加每条路线吗?

我在这里做错了什么?

【问题讨论】:

  • 此控制器操作不在 routeconfig 中
  • 您的 ResetPwd 路由意味着任何包含 2 个段的 url 都会到达该路由(不是 Default 路由)。您应该将其更改为(例如)url: "ResetPassword/{id}", (or you could add a constraint for the Id` 参数
  • @StephenMuecke ye 这就像一个魅力,谢谢很多伙伴! =D

标签: c# asp.net asp.net-mvc routing routes


【解决方案1】:

将您的重置密码路径更改为

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

目前,您提供的网址 /Dashboard/Index 是通过这条路线查找的,其中 Dashboard 是默认 Home 控制器上的操作,我认为该控制器不存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 2014-12-05
    • 2018-01-17
    • 2017-10-15
    • 1970-01-01
    相关资源
    最近更新 更多