2015-10-27 5 views
9

Согласно http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx#optionals-and-defaultsМаршрутизация атрибутов - необязательный параметр не работает?

У вас могут быть необязательные параметры, добавив знак вопроса (?) При использовании маршрутизации атрибутов. Однако для меня это не работает (ASP.NET Web API 5).

[Route("staff/{featureID?}")] 
    public List<string> GetStaff(int? featureID) { 
     List<string> staff = null;   
     return staff; 
    } 

Если я использую staff/1 и т.д. Он отлично работает, если я использую /staff я обычно:

"Нет HTTP ресурс не был найден соответствующий запрос URI ..."

«На контроллере не было найдено никаких действий, которые соответствуют запросу ».

У меня отсутствует ссылка или что-то еще? Или делать это неправильно?

ответ

1

Если я:

[Route("staff/{featureID=null}")]

вместо

[Route("staff/{featureID?}")]

Он работает.

Технически это не отвечает на мой вопрос, но он заставляет меня работать!

8

Я также столкнулся с той же проблемой и решил ее по-другому. Тем не менее, это все еще не сработало для меня, как указано в этом сообщении в блоге. Вместо добавления значения параметра по умолчанию в определении маршрута я добавил его в определение функции.

я должен был сделать это для меня пример для правильной работы, потому что я использовал string вместо int и добавления по умолчанию в определении маршрута null вызвал мой параметр функции, чтобы иметь строковое значение "null".

[Route("staff/{featureID?}")] 
public List<string> GetStaff(int? featureID = null) { 
    List<string> staff = null;   
    return staff; 
} 
+0

Глядя на это, это имеет смысл в качестве необязательного аргумента обычным способом будет сделано таким образом, хорошее понимание на «нулевой» части, а –

4

Это потому, что вы всегда должны установить значение по умолчанию для необязательного параметра, даже если значение по умолчанию равно null. Вот почему это работает:

[Route("staff/{featureID=null}")] 
+6

Тогда почему есть " ? символьной функциональности вообще? – Sal