锚标记不起作用

时间:2013-04-09 08:19:36

标签: html asp.net-mvc

我有两个锚标记,如下所示

<a href="www.exx.com" target="_blank">
            AnnualBudget</a>

当我点击上面的Anchor标签时,它没有正确的URL(因为它已经转到Mydomainname / www.exx.com )。但同时在锚标签下工作并转到正确的网址。

<a href="https://www.exx.com" target="_blank">
            AnnualBudget</a>

为什么www无效但https有效??我怎样才能解决这个问题?

更新

  • 该网址是在文本框中输入的。我该如何查看?

1 个答案:

答案 0 :(得分:5)

尝试将“http://”放在前面。

<a href="http://www.exx.com" target="_blank">AnnualBudget</a>

“www”不是协议/方案。 HTTPS或HTTP是协议。

绝对网址必须在前面有“方案”,请参阅details about URLs on Wikipedia

或者,这也可以:

<a href="//www.exx.com" target="_blank">AnnualBudget</a>

更新1:

由于您评论您的输入来自用户,请允许我添加以下内容:

enter image description here

(虽然这指的是SQL injection所有用户输入也是如此。

更新2:

要检查绝对URL的输入,请执行以下操作:

// Read from user input, e.g. (WebForms syntax!):
string my = MyTextBox.Text.Trim();

// Do some checking (this has be done much more thoroughly in real-life!)
if ( !my.StartsWith("http://") && !my.StartsWith("https://") )
{
    my = "http://" + my;
}

// Do something with "my", e.g. (again, WebForms syntax only):
MyHyperLink.NavigateUrl = my;

(请注意我不是MVC专家,上面的伪代码使用WebForms语法代替)