使用属性路由重载控制器方法
Controller method overloading using attribute routing
我可以更改方法名称,但谁能告诉我为什么这不起作用?我怎样才能在不更改方法名称的情况下使其工作。我也不想在视图中指定动作名称。可能吗?
[HttpGet]
[Route("AddUpdateCategories/{storeId}")]
public ActionResult AddUpdateStoreCategories(int storeId)
{
return View();
}
[HttpPost]
public ActionResult AddUpdateStoreCategories(int StoreId,int[] ShopCategoryId)
{
return null;
}
问题是 post 提交时未调用操作。
您不必更改方法名称。问题是这个 post 动作没有路由。如果使用属性路由,则必须为每个操作指定一个路由。这两个操作都将以相同的路由属性结束,但 [HttpPost]
属性足以让路由框架确定使用哪一个。
[Route("AddUpdateCategories/{storeId}")]
public ActionResult AddUpdateStoreCategories(int storeId)
{
return View();
}
[HttpPost]
[Route("AddUpdateCategories/{storeId}")]
public ActionResult AddUpdateStoreCategories(int StoreId,int[] ShopCategoryId)
{
return null;
}
我可以更改方法名称,但谁能告诉我为什么这不起作用?我怎样才能在不更改方法名称的情况下使其工作。我也不想在视图中指定动作名称。可能吗?
[HttpGet]
[Route("AddUpdateCategories/{storeId}")]
public ActionResult AddUpdateStoreCategories(int storeId)
{
return View();
}
[HttpPost]
public ActionResult AddUpdateStoreCategories(int StoreId,int[] ShopCategoryId)
{
return null;
}
问题是 post 提交时未调用操作。
您不必更改方法名称。问题是这个 post 动作没有路由。如果使用属性路由,则必须为每个操作指定一个路由。这两个操作都将以相同的路由属性结束,但 [HttpPost]
属性足以让路由框架确定使用哪一个。
[Route("AddUpdateCategories/{storeId}")]
public ActionResult AddUpdateStoreCategories(int storeId)
{
return View();
}
[HttpPost]
[Route("AddUpdateCategories/{storeId}")]
public ActionResult AddUpdateStoreCategories(int StoreId,int[] ShopCategoryId)
{
return null;
}