Это потому, что в C # запрещено иметь два метода с одинаковыми именами и типами параметров.Это не имеет ничего общего с ASP.NET MVC.Вам следует переименовать одно из двух Add
действий, которые могут быть вызваны GET.
У вас не может быть двух имен действий с одинаковым именем, которые можно вызывать с одним и тем же глаголом (в вашем случае GET).Вам нужно либо переименовать один из них, либо использовать другой HTTP-глагол, как вы делали с вашим действием POST.
ОБНОВЛЕНИЕ:
Вы можете попробовать ввести HTTP-глагол в селекторе пользовательских действий.атрибут:
public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)
{
return controllerContext.HttpContext.Request[ValueName] != null &&
controllerContext.HttpContext.Request.HttpMethod == "GET";
}
но, откровенно говоря, я бы не использовал селектор пользовательских действий для проверки наличия параметра запроса или нет.Ограничения маршрута или аннотации данных кажутся гораздо более подходящими для этой задачи.