列表排序-如何配置路由
List sort- how to configure routing
我有一个列出了一些数据的视图。我想让它排序。问题是我的路线配置
routes.MapRoute(
name: "Sort",
url: "Cars/Index/SortBy/{column}",
defaults: new { controller = "Cars", action = "Index", column = UrlParameter.Optional }
);
我的控制器中总是出现空参数 class。我尝试打开 /Cars/SortBy/columnname
或 /Cars/Index/SortBy/columnname
它不起作用。只有 /Cars/Index?sortBy=columnname
有效
public ActionResult Index(string SortBy)
{
switch (SortBy) // SortBy is null
{
case "manufactuer":
return View(db.Cars.OrderBy(c => c.Model.Manufacturer.Name));
break;
case "model":
return View(db.Cars.OrderBy(c => c.Model.Name));
}
return View(db.Cars);
}
如何让它发挥作用?
您应该将操作方法参数名称更改为 column
,因为这是您在定义路由时使用的名称。
public ActionResult Index(string column)
{
return View();
}
那么它将适用于 url Cars/Index/SortBy/model
如果你想让它为 url Cars/SortBy/model
(没有索引)工作,你可以使用这个路由定义。
routes.MapRoute(
name: "Sort",
url: "Cars/SortBy/{column}",
defaults: new { controller = "Cars", action = "Index", column = UrlParameter.Optional }
);
// Your other default route definition goes below this
或者如果您使用的是属性路由,
[Route("Cars/SortBy/{column}")]
public ActionResult Index(string column)
{
return View();
}
确保在 RegisterRoutes
方法中启用属性路由以使属性路由正常工作。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
//Custom and default route definitions goes here
}
我有一个列出了一些数据的视图。我想让它排序。问题是我的路线配置
routes.MapRoute(
name: "Sort",
url: "Cars/Index/SortBy/{column}",
defaults: new { controller = "Cars", action = "Index", column = UrlParameter.Optional }
);
我的控制器中总是出现空参数 class。我尝试打开 /Cars/SortBy/columnname
或 /Cars/Index/SortBy/columnname
它不起作用。只有 /Cars/Index?sortBy=columnname
有效
public ActionResult Index(string SortBy)
{
switch (SortBy) // SortBy is null
{
case "manufactuer":
return View(db.Cars.OrderBy(c => c.Model.Manufacturer.Name));
break;
case "model":
return View(db.Cars.OrderBy(c => c.Model.Name));
}
return View(db.Cars);
}
如何让它发挥作用?
您应该将操作方法参数名称更改为 column
,因为这是您在定义路由时使用的名称。
public ActionResult Index(string column)
{
return View();
}
那么它将适用于 url Cars/Index/SortBy/model
如果你想让它为 url Cars/SortBy/model
(没有索引)工作,你可以使用这个路由定义。
routes.MapRoute(
name: "Sort",
url: "Cars/SortBy/{column}",
defaults: new { controller = "Cars", action = "Index", column = UrlParameter.Optional }
);
// Your other default route definition goes below this
或者如果您使用的是属性路由,
[Route("Cars/SortBy/{column}")]
public ActionResult Index(string column)
{
return View();
}
确保在 RegisterRoutes
方法中启用属性路由以使属性路由正常工作。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
//Custom and default route definitions goes here
}