我正在尝试使用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有什么问题,但是即使它有问题,为什么它不会重新回到默认的常规路线并且工作?
答案 0 :(得分:0)
使用属性路由定义,您明确指定路由模式为
Home/SimpleSearch/{searchTerms}/{dateRange}/{page?}
因此,您应尝试使用相同的网址格式访问您的操作方法。
这应该有用。
http://localhost:52386/Home/SimpleSearch/test/0
和模型活页夹可以将"test"
映射到searchTerms
参数,将0映射到dateRange
参数。
当您拥有具有不同模式的属性路由时,您的传统(明确使用查询字符串)将无效