2013-10-11 5 views
0

Использование ASP.NET MVC 4 У меня есть два метода Index в одном контроллере, но с разными сигнатурами.Почему я получаю AmbiguousMatchException?

public ActionResult Index() 
    { 
     //... 
    } 

    public ActionResult Index(ManageOvertimesViewModel model) 
    { 
     //... 
    } 

Я не понимаю, почему я получаю эту ошибку. (Если я даю атрибут HttpPost, чем он работает, поэтому, вероятно, я это сделаю, но я не понимаю, почему он не работает.)

+0

Возможный дубликат [Как я могу избежать исключения AmbiguousMatchException между двумя действиями контроллера?] (Http://stackoverflow.com/questions/732205/how-can-i-avoid-ambiguousmatchexception-between-two-controller-actions) – twoleggedhorse

+0

@twoleggedhorse: Я знаю, что это можно было бы решить, но мне интересно, почему инфраструктура не может решить, на какой вызов нужно ссылаться на основе параметров http. – jannagy02

ответ

0

Я думаю, вы не можете иметь 2 ActionResult, отвечающих на одну и ту же операцию HTTP в основном потому что:

Какое действие будет определять структура, если вы получаете HTTP GET с пустыми параметрами? первый (без привязки к модели) или второй (с пустой связью модели)? основанный только на параметрах, не так просто, если вы действительно думаете об этом, это может привести к нежелательным результатам.

+0

Да, возможно, это может быть причиной, поэтому я принимаю его, но он работает одинаково, если у меня есть два индекса, а первый не имеет параметра, второй имеет параметр с параметром, который не может быть нулевым. – jannagy02

+0

Выполняете ли вы изменения во втором действии индекса? если нет, возможно, вам просто нужно одно действие индекса с моделью (предполагая, что для фильтрации и логика не сильно отличается) – JOBG

Смежные вопросы