Кодировать значение davaview в ASP.NET MVC Actionlink - PullRequest
0 голосов
/ 17 февраля 2009

Я использую Microsoft Ajax Template DataView для привязки значений к шаблону. Я могу сделать это, и это работает так, как вы ожидаете:

<h3>{{ID}}</h3>
<p>{{Address}}</p>

Однако я пытаюсь создать ссылку для действия, в которой есть идентификатор.

<h2><%= Html.ActionLink(Html.AttributeEncode("{{Name}}"), "Index", "Restaurant", new { Id = Html.AttributeEncode("{{ID}}") }, null)%></h2>

Имя отображается в виде текста ссылки, как я хотел, но ссылка не содержит идентификатор, вместо этого он имеет% 7B% 7BID% 7D% 7D

Как мне получить идентификатор, который будет правильно проанализирован и добавлен в ссылку?

Ответы [ 3 ]

0 голосов
/ 17 февраля 2009

Наконец-то все заработало, я не знаю, был ли я глупым или нет документации, но вот как связать значение dataview со ссылкой.

 <h2><a sys:href="{{'Restaurant/Index/' + ID}}">{{Name}}</a></h2>

Фактическая часть маршрута URL должна быть в одинарных кавычках, и вам нужно использовать sys: href вместо href.

0 голосов
/ 18 февраля 2009

Рекомендуется включать '<%= Url.Action("Index", "Restaurant")%>' при создании URL-адреса вручную, чтобы избежать проблем с именем приложения и конфликтующими URL-адресами.

0 голосов
/ 17 февраля 2009

Возможно, что дополнительные скобки сбрасывают его. Попробуйте присвоить значения переменным и использовать переменные в ActionLink. Вы можете выполнить назначение в верхней части представления, а затем повторно использовать их также во всем представлении. чтобы не перекодировать их везде.

  <% var id = Html.AttributeEncode( "{{ID}}" );
     var name = Html.AttributeEncode( "{{Name}}" );
   %>
  <h2><%= Html.ActionLink(name, "Index", "Restaurant", new { Id = id }, null)%></h2>
...