【问题标题】:Asp.net Mvc Route not workingAsp.net Mvc 路由不起作用
【发布时间】:2016-01-25 03:41:58
【问题描述】:

我的 mvc 5 项目有以下路线。当我尝试通过 url 访问操作时,它会引发 404 错误页面。我做错了什么?

RouteConfig.cs

  .... 
routes.MapRoute
       (
              name: "EventMoneyMovements2",
              url: "eventos/{eventID}/movimientos",
              defaults: new { controller = "EventMoneyMovements", action = "ListByEvent", eventID = UrlParameter.Optional }

       );

控制器

public class EventMoneyMovementsController : Controller
    {
        //
        // GET: /EventMoneyMovements/

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult ListByEvent(int? eventID)
        {

            return View();
        }

    }

【问题讨论】:

  • 能否请您发布您尝试转到的确切 url...
  • 您需要发布整个 RouteConfig。订单很重要。如果默认路由位于 {controller}/{action}/{id} 的顶部,它将始终是路由的那个。

标签: c# asp.net-mvc


【解决方案1】:

您注册路线的顺序很重要。您应该始终在通用默认路由之前注册您的特定路由

假设您在通用之前注册您的特定路线,如下所示。

public static void RegisterRoutes(RouteCollection routes)
{
   routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
   routes.MapRoute
   (
          name: "EventMoneyMovements2",
          url: "eventos/{eventID}/movimientos",
          defaults: new { controller = "EventMoneyMovements", action = "ListByEvent",
                                                         eventID = UrlParameter.Optional }

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

使用此定义,您可以使用请求 url 访问 ListByEvent 操作方法

yourSiteName/eventos/101/movimientosyourSitename/EventMoneyMovements/ListByEvent?eventID=101 其中101 是任何 int 值

【讨论】:

    【解决方案2】:

    您必须在默认 MVC 路由之前定义自定义路由,因为在路由配置中定义的所有路由都按照我们在路由配置中定义的顺序维护在路由表中。

    更多信息请参考以下网址:

    http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/creating-custom-routes-cs

    【讨论】:

      猜你喜欢
      • 2017-02-20
      • 2013-02-23
      • 1970-01-01
      • 2023-04-02
      • 2017-11-08
      • 2012-08-04
      • 2020-03-26
      • 1970-01-01
      相关资源
      最近更新 更多