Вопрос

Я использую 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

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

Это было полезно?

Решение 2

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

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top