У меня есть контроллер с двумя действиями, которые имеют одинаковое имя, но одно принимает некоторые параметры.Чтобы устранить их неоднозначность, один принимает только запросы GET, а другой - только запросы POST.У меня также есть HttpAjaxAttribute, который используется для принудительного вызова только Ajax-вызовов метода действия.По какой-то причине это решение не является надежным, иногда на запрос GET к действию Import MVC упорно пытается выбрать POST / AJAX один и бросает исключение Ajax из HttpAjaxAttribute.Я нашел вопрос, который может быть связан .Я думал, что наличие атрибутов в определенном порядке (HttpGet или HttpPost, а затем HttpAjax) решит проблему, но это не так.Мой веб-сайт работал некоторое время, и теперь он не работает.Я сталкивался с этой проблемой в случайное время.Как это исправить навсегда?
Действия контроллера
[HttpGet]
public ActionResult Import()
{
// some code
}
[HttpPost]
[HttpAjax]
public ActionResult Import(string country, string state, string city, ImportModel[] locations)
{
// some code
}
HttpAjaxAttribute
/// <summary>
/// Makes the controller action that has this attribute applied accept only Ajax requests.
/// </summary>
public class HttpAjaxAttribute : ActionMethodSelectorAttribute
{
public override bool IsValidForRequest(ControllerContext controllerContext, System.Reflection.MethodInfo methodInfo)
{
if (!controllerContext.HttpContext.Request.IsAjaxRequest())
{
throw new Exception("The action " + methodInfo.Name + " can only be called via an Ajax request");
}
return true;
}
}