Созданный в методе для кодирования амперсандов в URL, возвращенных из URL. Действие?

Я использую URL. Действие для генерации URL с двумя параметрами запроса на сайте, который имеет doctype строгого XHTML.

Url.Action("ActionName", "ControllerName", new { paramA="1" paramB="2" })

генерирует:

/ControllerName/ActionName/?paramA=1&paramB=2

но мне нужен он для генерации URL с амперсандом, которого оставляют:

/ControllerName/ActionName/?paramA=1&paramB=2

Факт тот URL. Действие возвращает URL с амперсандом не оставленные повреждения моя проверка HTML. Мое текущее решение состоит в том, чтобы просто вручную заменить амперсанд в URL, возвращенном из URL. Действие с завершенным амперсандом. Существует ли встроенное или лучшее решение этой проблемы?

8
задан Blegger 24 May 2010 в 17:20
поделиться

2 ответа

В итоге я просто создал расширение для Url.Action под названием Url.ActionEncoded. Код выглядит следующим образом:

namespace System.Web.Mvc {
    public static class UrlHelperExtension {
        public static string ActionEncoded(this UrlHelper helper, StpLibrary.RouteObject customLinkObject) {
            return HttpUtility.HtmlEncode(helper.Action(customLinkObject.Action, customLinkObject.Controller, customLinkObject.Routes));
        }
        public static string ActionEncoded(this UrlHelper helper, string action) {
            return HttpUtility.HtmlEncode(helper.Action(action));
        }
        public static string ActionEncoded(this UrlHelper helper, string action, object routeValues) {
            return HttpUtility.HtmlEncode(helper.Action(action, routeValues));
        }
        public static string ActionEncoded(this UrlHelper helper, string action, string controller, object routeValues) {
            return HttpUtility.HtmlEncode(helper.Action(action, controller, routeValues));
        }
    }
}
0
ответ дан 5 December 2019 в 18:57
поделиться

Есть причины, по которым вы не можете использовать Server.HtmlEncode()

string EncodedUrl = Server.HtmlEncode(Url.Action("Action", "Controller", new {paramA = "1", paramB = "2"}));

http://msdn.microsoft.com/en-us/library/w3te6wfz.aspx

1
ответ дан 5 December 2019 в 18:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: