0

我有一个表格,可以让人们在我的网站上输入各种链接,例如:http、https 和 ftp。当有人输入“http:stackoverflow.com”、“https:stackoverflow.com”和“ftp:stackoverflow.com”并将它们呈现在如下视图中时:

<ul>
    @foreach (var link in Model.Keyword.References)
    {
        <li>
            <a href="@link.Link" target="_blank">@link.Link</a>
        </li>
    }
</ul>

我得到以下输出:

  • http:stackoverflow.com
  • https:stackoverflow.com
  • ftp:stackoverflow.com

这看起来不错,但是当我将鼠标悬停在“http:stackoverflow.com”上时,真正的链接是:“localhost:1973/stackoverflow.com”。

当我悬停 https 和 ftp 链接时,我得到正确的输出:

我发现当我通过表单提交 http 链接时,它们需要两个“正斜杠”。所以你得到的不是“http:”,而是“http://”。我想知道为什么 https 和 ftp 链接不需要这些额外的斜杠。我也想知道一个好的解决方案,因为我认为我不应该强迫用户使用这些额外的斜杠。

4

2 回答 2

0

至于一个好的解决方案,我认为你应该只接受没有http://的域。您可以在显示“示例:'www.somedomain.com'”的输入下方放置一些小文本,以便用户知道不需要前面的协议。

然后,您可以使用 JQUERY/REGEX 来验证和删除任何可能有人错误添加的协议内容。

于 2013-08-03T17:26:58.620 回答
0

URL 中的斜杠始终是必需的。可能是您的浏览器对无效的 url 进行了一些更正。尝试将 https:stackoverflow.com 放在浏览器的地址栏中,它会尝试在大多数浏览器中更正它。

于 2013-08-03T17:16:47.400 回答