是否存在允许按网址格式限制操作方法的操作属性?
在我的控制器中,我想要两个SearchOrder操作。一个用于编辑订单,一个用于查看订单。如果url路径是/ Order / EditOrder / SearchOrder / 1,我希望它执行此操作。
[HttpGet]
[ActionName("SearchOrder")]
public ActionResult EditOrderSearchOrder()
{
. . . .
}
但是如果url路径是/ Order / ViewOrder / SearchOrder / 1,我希望它执行此操作。
[HttpGet]
[ActionName("SearchOrder")]
public ActionResult ViewOrderSearchOrder()
{
. . . .
}
答案 0 :(得分:2)
有很多方法。他们之中有一些是 写在RouteConfig.cs
routes.MapRoute(
name: "Properties",
url: "Order/EditOrder/SearchOrder/{action}/{id}",
defaults: new
{
controller = "YourControllerName",
action = "SearchOrder",\\ bcoz you have given action name attribute otherwise your method name
id = UrlParameter.Optional \\ you can Change optional to Fixed to make passing Id parameter compulsory
}
);
如果使用Mvc5,您可以按照简单的语法进行属性路由:
[Route("Order/EditOrder/SearchOrder/{id?}")] // ? For optional parameter
public ActionResult EditOrderSearchOrder(){}
和 要启用属性路由,请在RouteConfig.cs中调用MapMvcAttributeRoutes
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”);
routes.MapMvcAttributeRoutes();
}
}