QueryString с MVC 5 AttributeRouting в веб-API 2
У меня есть следующий код
[HttpGet]
[Route("publish/{id}")]
public IHttpActionResult B(string id, string publishid=null) { ... }
Итак, насколько я понял,
~/..../publish/1?publishid=12
~/..../publish?id=1&publishid=12
Должен работать и связывать оба параметра, но он не будет работать во втором случае. В первом случае publishid не будет связан.
Поэтому я не понимаю, почему это не работает. Есть идеи, почему так?
1 ответ
Решение
Второй случай не будет работать, потому что id
является обязательной переменной в шаблоне маршрута publish/{id}
, В Web API сначала выполняется сопоставление шаблона маршрута, а затем процесс выбора действия.
другие случаи:
publish/1
- не будет работать как действиеB
говорит, что publishid требуется. Чтобы предотвратить это, вы можете изменить подпись действия на что-то вродеB(string id, string publishid=null)
и толькоid
связанpublish/1?publishid=10
- работает, как и ожидалось, где оба связаны.