Ситуация
Во View была строка@Html.ActionLink("Заказать", "add", "order",
new {id=Model.Id, feedbackid=Model.FeedbackId},
new {rel="nofollow"})
т.к. набор параметров был опциональный - захотелось их вынести в отдельную переменную
код стал таким
@{
var addOrderLinkRouteValues = new RouteValueDictionary();
addOrderLinkRouteValues.Add("Id", Model.Id);
// опциональное добавление других параметров
}
...
@Html.ActionLink("Заказать", "add", "order",
addOrderLinkRouteValues,
new {rel="nofollow"})
Проблема
испортилась ссылка. вместо набора параметров в ссылке на выходе стало отображаться название типа
/order/add?Count=1&Keys=System.Collections.Generic.Dictionary%602%2BKeyCollection%5BSystem.String%2CSystem.Object%5D&Values=System.Collections.Generic.Dictionary%602%2BValueCollection%5BSystem.String%2CSystem.Object%5D
Решение
Если в двух словах. при таком использовании система подхватывает не тот перегруженный метод
подхватывается такой
ActionLink(HtmlHelper, String, String, String, Object, Object)
а нам нужен быть такой
ActionLink(HtmlHelper, String, String, RouteValueDictionary, IDictionary<String, Object>)
соответственно код нужно заменить на такой
@Html.ActionLink("Заказать", "add", "order",
addOrderLinkRouteValues,
new Dictionary<string, object>{
{"rel","nofollow"}
}
)
тут последний параметр задан типом Dictionary (реализующим IDictionary) а не объектом
Комментариев нет:
Отправить комментарий