ASP.NET MVC属性&常规路由无法正常工作

时间:2016-09-08 16:24:42

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

我正在尝试使用Conventional和amp;来配置路由。基于属性。

如果我只使用MVC附带的默认常规路由,一切正常。但如果我添加这个Route属性,我会得到一个404.

以下是GET请求网址:http://localhost:52386/Home/SimpleSearch?searchTerms=test&dateRange=0

这是我在Code中的RouteAttributes:

[RoutePrefix("Home")] 
public class HomeController : Controller
{
    [Route("SimpleSearch/{searchTerms}/{dateRange}/{page?}")]
    [HttpGet]
    public ActionResult SimpleSearch(string searchTerms, DateRangeEnum dateRange, int page = 1)
    {
       //Code here
    }

}

Route Config也是如此:

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

        routes.MapMvcAttributeRoutes();

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

我不知道这个RouteAttribute有什么问题,但是即使它有问题,为什么它不会重新回到默认的常规路线并且工作?

1 个答案:

答案 0 :(得分:0)

使用属性路由定义,您明确指定路由模式为

Home/SimpleSearch/{searchTerms}/{dateRange}/{page?}

因此,您应尝试使用相同的网址格式访问您的操作方法。

这应该有用。

 http://localhost:52386/Home/SimpleSearch/test/0

和模型活页夹可以将"test"映射到searchTerms参数,将0映射到dateRange参数。

当您拥有具有不同模式的属性路由时,您的传统(明确使用查询字符串)将无效