#asp.net-mvc-3 #model-view-controller #routedata
#asp.net-mvc-3 #model-view-controller #routedata
Вопрос:
У меня есть ViewModel, который представляет собой очень простой объект фильтра, подобный этому:
public class FilterViewModel
{
public String FilterTerm { get; set; }
public String FilterProperty { get; set; }
}
то, что я надеялся сделать, это сделать ссылку маршрута с другой страницы на эту и передать мой FilterViewModel в создание URL-адреса маршрута в routeValues следующим образом:
Url.RouteUrl("myRoute", new { filter = new FilterViewModel() { FilterProperty = "Product", FilterTerm = _detail.FilterTerm }})"
Итак, то, что отображается на другой стороне,
http://theurl?filter=Fully.Qualified.Namespace.FilterViewModel
Я не знаю, чего я ожидал, возможно, что-то, что сериализуется в строку запроса следующим образом:
http://theurl?filter=FilterProperty|Product,FilterTerm|ProductA
Есть ли способ сделать то, что я пытаюсь сделать из коробки? (или не из коробки)
Ответ №1:
Попробуйте так:
Url.RouteUrl(
"myRoute",
new {
FilterProperty = "Product",
FilterTerm = _detail.FilterTerm
}
)
Понятия не имею, как выглядит ваша конфигурация маршрутизации, но это может привести к чему-то среди строк http://theurl?FilterProperty=Productamp;FilterTerm=ProductA
. Для чего-то более экзотического, такого как URL-адреса, которые вы указали в своем вопросе, вам придется написать пользовательские помощники. В этом нет ничего стандартного.
Комментарии:
1. Хорошо, потрясающе… Я слишком усложнял это… Это правильная реализация моей проблемы… Я думал, что мне придется имитировать эту структуру в параметрах метода контроллера… Но я этого не сделал, я сохранил параметр своего метода следующим образом: MyAction(FilterViewModel filter), и он привязан правильно… Спасибо за вашу помощь, иногда я зацикливаюсь на привязке модели.