Asp.net mvc MVC4-如何在视图中正确执行URL?

Asp.net mvc MVC4-如何在视图中正确执行URL?,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc Routing,我有一个MVC4视图。其中一个属性是“Url”。我在这个视图的一个字段中显示URL的值,当用户单击它时,我想执行URL。我有以下代码: <div class="display-label"> @Html.DisplayName("Url") </div> <div class="display-field"> <a href="@Model.Url">@Model.Url</a> </div> 看来我做错

我有一个MVC4视图。其中一个属性是“Url”。我在这个视图的一个字段中显示URL的值,当用户单击它时,我想执行URL。我有以下代码:

<div class="display-label">
     @Html.DisplayName("Url")
</div>
<div class="display-field">
    <a href="@Model.Url">@Model.Url</a>
</div>

看来我做错了什么,因为它试图调用控制器上的方法。我对这一切还相当陌生,所以我不完全确定如何解决这个问题。

本例中的问题是您的
Url
不是以协议开头的(即
http://
)-因此浏览器将此解释为您文档的相对Url。您需要向应用程序添加一些逻辑,以确保外部URL以协议开头,如下所示:

var url = "www.microsoft.com";
if (!string.IsNullOrWhiteSpace(url) && !url.StartsWith("http://")) {
    url = "http://" + url;
}

本例中的问题是您的
Url
不是以协议开头的(即
http://
)-因此浏览器将其解释为您文档的相对Url。您需要向应用程序添加一些逻辑,以确保外部URL以协议开头,如下所示:

var url = "www.microsoft.com";
if (!string.IsNullOrWhiteSpace(url) && !url.StartsWith("http://")) {
    url = "http://" + url;
}

你是如何填充Model.Url的?我不知道你的意思。在从数据库表中读入值之后,我将它填充到控制器中。该值存储为“www.microsoft.com”。您如何填充Model.Url?我不知道您的意思。在从数据库表中读入值之后,我将它填充到控制器中。该值存储为“www.microsoft.com”。