У вас возникла проблема с отображением URL, а не с генерацией URL.URL может содержать не закодированный амперсанд, и есть места, которые могут быть именно тем, что вам нужно.Однако HTML-код, в который вы его встраиваете, требует кодирования амперсандов и различных других символов.
Хотя вспомогательный метод позволяет сэкономить некоторую типизацию в представлениях, я всегда нахожу, что он избавляет от головной боли при использовании любой кодировки дисплеясделано в самый последний момент, поэтому я всегда работаю с подлинной строкой / URL вплоть до того момента, когда мне нужно манипулировать ею для использования в определенном выходном формате.Если вы добавите вспомогательное расширение из вашего ответа в HtmlHelper, у вас будет меньше соблазнов преждевременно кодировать URL-адрес до того, как он действительно понадобится.
Чтобы перевести его в HTML:
// with MVC3 auto-encoding goodness
<%:Url.Action(...)%>
// old-school MVC
<%=Html.Encode(Url.Action(...))%>
Чтобы поместить его в атрибут anchor / src непосредственно в представлении, вы, вероятно, можете избежать использования Html.Encode
или менее строгого параметра:
<%=Html.AttributeEncode(Url.Action(...))%>