使用属性路由重载控制器方法

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;
}