2017-02-16 22 views
1

Есть 3 атрибутам МаршрутыТекущий запрос неоднозначен MVC Атрибут Route

[Route("{foo}_{bar}_{fee}_o_p")] ActionResult SelectFee
[Route("{foo}_{bar}_{fee}_{fii}_o_p")]ActionResult SelectFii
[Route("{foo}_{bar}_{fee}_{fii}_{fum}_o_p")]ActionResult SelectFum

Первая 2 работы, как и ожидалось. Но последний имеет неоднозначную ошибку отражения.

Это также странно, если бы я должен был переместить 2 из них к другой области/контроллеру неоднозначной ошибка возникает для них, а Если я обновлю в [Route("Select/{foo}_{bar}_{fee}_{fii}_{fum}_o_p")]ActionResult SelectFum это работает ...

Маршруты
public ActionResult SelectFee(string foo, string bar, string fee)
public ActionResult SelectFii(string foo, string bar, string fee, string fii)
public ActionResult SelectFum(string foo, string bar, string fee, string fii, string fum)

Точные ошибки от Elmah
System.Reflection.AmbiguousMatchException: текущий запрос неоднозначен между следующими способами:
System.Web.Mvc.ActionResult SelectedFee (System.String, System.String, System.String) типа RexProject.Controllers.ShopController
System.Web.Mvc.ActionResult SelectFii (System.String, System.String, System.String, System.String) типа RexProject.Controllers.ShopController
System.Web.Mvc.ActionResult SelectFum (System.String, System. String, System.String, System.String, System.String) по типу RexProject.Controllers.ShopController

Любой вход будет полезен! Спасибо!

Solution (или работа вокруг)
Удалены маршрутизацией атрибутов, и поместил их внутри RegisterRoutes метода в RouteConfig, Longest Во-первых, и они работают, как ожидалось.

+0

Все три маршрута идентичны - они указывают, что URL-адрес содержит только один сегмент. –

+0

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

ответ

0

Пользовательская маршрутизация не требуется, если это стандартный get, привязка будет выполняться автоматически из строки запроса, похоже, вы просто пытаетесь изменить формат url, и я не уверен, что вы получаете от него.

public ActionResult SelectFum(string foo = null, string bar = null, string fee = null, string fii = null, string fum = null) 
{ 
    //your code 
} 
+0

Но это ничего не делает для SEO – juanvan

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

  • Нет связанных вопросов^_^