Я хочу, чтобы связать параметры URL в мой Point
объекта с использованием маршрутизации атрибутов и [FromUri]
атрибутов таким образом, что следующий URL можно:Передача сложных объектов в ASP.NET Web API Использование FromUri
/Foo-1 , 2
public IHttpActionResult PostFoo(
[FromBody] string content,
[FromUri] Point point)
{
}
public class Point
{
public int A { get; set; }
public int B { get; set; }
// ...Other properties omitted for simplicity
}
Я попытался следующие атрибуты маршрута, но ни одна из этих работ:
[Route("foo-{a},{b}")]
[Route("foo-{A},{B}")]
[Route("foo-{point.A},{point.B}")]
Обратите внимание, что я не могу использовать параметры строки запроса, потому что плохо встроенная сторонняя служба не принимает амперсанды в своих URL (да, это так плохо). Поэтому я пытаюсь построить все параметры строки запроса в самом URL-адресе.
Вы можете рассмотреть вопрос об использовании URL-Rewriter переписать URL прежде, чем это делает его MVC. Сделал бы вещь смехотворно легкой для любого url. –
@ErikPhilips Я подумывал написать какой-то фильтр или связующее для модели, чтобы сделать то же самое. Я думаю, что возвращение к IIS является допустимым вариантом. –
Взаимодействие с моделью очень долго в процессе выбора маршрута. Вам, вероятно, потребуется написать [RouteHandler] (http://www.brainthud.com/cards/5218/24821/give-an-example-of-how-you-would-create-a-custom-route- обработчик к Reroute-запросов-с-определенной стоимости-в-принять-HTTP-он). –