【问题标题】:MVC Custom action route - 404 errorMVC 自定义操作路由 - 404 错误
【发布时间】:2016-05-27 19:34:52
【问题描述】:

我想使用自定义 URL 路由:

http://localhost/MyController/MyView/11/25?someID=0

为此,我有以下操作:

[Route("{page}/{size}")]
public ActionResult MyView(int page = 0, int size = 25, FilterModel filterModel = null)
{
   ...
}

但我收到 404 错误。怎么了 ?例如,该 URL 有效:

http://localhost/MyController/MyView?someID=0

【问题讨论】:

    标签: asp.net-mvc routes url-routing asp.net-mvc-routing attributerouting


    【解决方案1】:

    你定义的路线:

    [Route("{page}/{size}")]
    public ActionResult MyView(int page = 0, int size = 25, FilterModel filterModel = null)
    {
       ...
    }
    

    与您想要的网址不匹配:

    http://localhost/MyController/MyView/11/25?someID=0
    

    您需要确保它们相同(假设您没有在控制器上使用RoutePrefix 属性):

    [Route("MyController/MyView/{page}/{size}")]
    public ActionResult MyView(int page = 0, int size = 25, FilterModel filterModel = null)
    {
       ...
    }
    

    URL http://localhost/MyController/MyView?someID=0 起作用的原因很可能是它与您的 Default 路由匹配并将正确的控制器和操作名称传递给框架以获取操作方法。

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

    还要注意,您需要在默认路由之前添加route.MapMvcAttributeRoutes() 才能启用属性路由。

    【讨论】:

      【解决方案2】:

      这是属性路由。对最后一个答案表示歉意。

      routes.MapRoute( 名称:“我的视图”, 网址:“{page}/{size}”, 默认值:新 { 控制器 = “MyController”,动作 = “MyView” }, 约束:新 { page="", size="" } );

      https://blogs.msdn.microsoft.com/webdev/2013/10/17/attribute-routing-in-asp-net-mvc-5/

      【讨论】:

      • 找不到 404 个
      猜你喜欢
      • 2017-09-29
      • 2010-10-07
      • 1970-01-01
      • 2016-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-30
      • 1970-01-01
      相关资源
      最近更新 更多