Это действительно для HTML-кодирования URL - PullRequest
1 голос
/ 31 января 2012

У меня есть следующий фрагмент:

<div id="recommendFooter">
    <% string urlRecommend = Url.Action("RecommendProduct", "Products", new { url = ViewContext.RequestContext.HttpContext.Request.Url.ToString() }); %>
    <div>
        <a href="<%= urlRecommend %>">This product is awesome!</a>
    </div>
</div>

Это должно вывести Html следующим образом:

<div id="recommendFooter">
     <div>
        <a href="http://www.mysite.com/Products/RecommendProduct?url=http://www.mysite.com/products/productbykey/20" >This product is awesome!</a>
    </div>
</div>

Я не уверен, что смогу Html-Encode urlRecommend или дажезначение ViewContext.RequestContext.HttpContext.Request.Url.ToString ().

У меня есть Запрос - Проверка включена, но для этой части предположим, что я не включил ее.Можно и нужно ли здесь Html-кодировать?

РЕДАКТИРОВАТЬ 1

Полагаю, это то, что предлагает Гуффа:

  <div id="recommendFooter">
        <% string urlRecommend = Url.Action("RecommendProduct", "Products",  new { url = Server.UrlEncode( ViewContext.RequestContext.HttpContext.Request.Url.ToString() )}); 
string urlRecommendXssSave = Server.HtmlEncode(urlRecommend );

%>
        <div>
            <a href="<%= urlRecommendXssSave %>">This product is awesome!</a>
        </div>
    </div>

1 Ответ

1 голос
/ 31 января 2012

Значение должно быть закодировано в HTML, поскольку оно содержится в атрибуте в коде HTML, но это не имеет значения, поскольку нет символов, которые нужно экранировать.

Вам нужно, чтобы URL кодировал значение в строке запроса в URL.

HTML-код для ссылки должен выглядеть так:

<a href="http://www.mysite.com/Products/RecommendProduct?url=http%3a%2f%2fhttp%3a%2f%2fwww.mysite.com%2fproducts%2fproductbykey%2f20">This product is awesome!</a>

(Примечание: я сохранил дубликат http:// в значении из вашего вопроса, вы, вероятно, должны это исправить.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...