【问题标题】:How do I properly encode URLs in ASP.NET?如何在 ASP.NET 中正确编码 URL?
【发布时间】:2018-09-15 05:03:54
【问题描述】:

在我的数据库中,我的 URL 以 http://SOMEURL 开头,有些只是 www.SOMEURL。

在我看来,“如果我只是输入<a href="@Model.URL">,它将无法正常工作。 当我尝试在本地浏览时,它会添加http://localhost/SOMEURL

如何在 ASP 中处理这个 BASIC 功能?

google.com https://www.google.com

【问题讨论】:

  • 请为@Model.URL发布一些数据示例
  • 示例添加 ddddd
  • google.com 还是https://www.google.com(第二个可以正常工作)

标签: html asp.net-mvc url encoding view


【解决方案1】:

您应该手动检查 http 前缀。 URL 将在 ASP.NET MVC 中自动编码(例如替换特殊字符)。

在 Razor 视图中(.cshtml;文件顶部的任何位置)

@functions
{
    public string PrefixUrl(string url)
    {
        return url.StartsWith("http") ? url : string.Format("http://{0}", url);
    }
}

我希望我们现在可以假设 https 但可能,使用 http 更安全。

然后,在视图中,使用:

<div>
    <a href="@PrefixUrl(Model.Url)">Link</a>
</div>

【讨论】:

  • 我不敢相信没有更简单的解决方案。我不敢相信我需要处理 URL 是否以 HTTP HTTPS WWW 开头,或者都不是。
  • 函数StartsWith("http")也将覆盖https并呈现正确的url。
  • 它非常基础。它只是说“如果您的 url 以 http-ish 开头,则按原样写出来,否则假定缺少正确的前缀并以 http 为前缀”。您还可以将url.StartsWith("http") 更改为url.Contains("://"),使其与前缀 URL 的共同点更加通用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-10
  • 2021-07-26
相关资源
最近更新 更多