Здесь я немного отклоняюсь от проторенной дорожки, но это не кажется слишком неразумным.
В представлении с этим кодом:
<div>Hello ${Name}</div>
Запустив файл jquery.tmpl с {Id: 1, Name = "Bob" }, вы увидите на клиенте следующее:
<div>Hello Bob</div>
Это здорово и все такое, но давайте представим URL:
В представлении с этим кодом:
<div>Hello <a href="<%: Url.Action("Profile", new { id= "${Id}" }) %>">${Name}</a></div>
Оказывает на:
<div>Hello <a href="/User/Profile?id=%24%7BId%7D">${Name}</a></div>
И после запуска jquery.tmpl закодированный тег Id не подхватывается:
<div>Hello <a href="/User/Profile?id=%24%7BId%7D">Bob</a></div>
Я понимаю, почему это происходит, но то, с чем я борюсь, - это способ предотвратить кодирование значений маршрута. Я теряю след после того, как какое-то время копался в декомпилированном коде, фактический механизм кодирования ускользает от меня. Если бы это был я, я бы преобразовал значения маршрута в HttpNameCollection
и ToString
, например, используя HttpUtility.Parse()
.
MVC был удивительно гибок в таких вещах, поэтому мне трудно поверить, что я не могу изменить кодировщик или обернуть значения маршрута с помощью MvcHtmlString
или чего-то подобного.
Как я могу получить Url.Action, будь то из расширений UrlHelper или замененного и расширенного кодировщика, сохранить значения маршрута с форматами jquery.tmpl: ${value}