в бритве, как иметь ссылку на внешний URL из базы данных - PullRequest
0 голосов
/ 18 сентября 2018

на моей странице бритвы у меня есть.

<p>
    <span>Website: </span>
    <span>
        <a href="@(Url.Encode(Model.PrimaryInfo.WebsiteUrl))" target="_blank">@Model.PrimaryInfo.WebsiteUrl</a>
    </span>
</p>

, когда я осматриваю элемент, который вижу.страница отображается как

Веб-сайт: https://www.mywebsite.org/

, когда я проверяю элемент, я получаю

<a href="https%3a%2f%2fwww.mywebsite.org%2f" target="_blank">https://www.mywebsite.org/</a>

, и когда я нажимаю на ссылку, я получаю

[HttpException (0x80004005): У клиента было обнаружено потенциально опасное значение Request.Path (:).]
System.Web.HttpRequest.ValidateInputIfRequiredByConfig () + 9939972
Система.Web.PipelineStepManager.ValidateHelper (контекст HttpContext) + 53

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Вот ваш контрольный список:

  1. Тип данных не в Юникоде не используется: проверьте, что вы храните URL-адреса в базе данных как тип NVarChar и не используете VarChar

  2. Нет необходимости кодировать: удалите кодировку.

  3. Подтвердите, что вы не нарушаете схему проверки запроса согласно .Net.Пожалуйста, обратитесь к статье Hanslman: https://www.hanselman.com/blog/ExperimentsInWackinessAllowingPercentsAnglebracketsAndOtherNaughtyThingsInTheASPNETIISRequestURL.aspx

0 голосов
/ 18 сентября 2018

Попробуйте использовать это

public static class LinkHelper{
public static string ExternalLink(this HtmlHelper helper, string url, string text)
    {
        return String.Format("<a href='http://{0}' target="_blank">{1}</a>", url,text);
}}

и в поле зрения

@Html.ExternalLink("www.google.com", "Google")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...