MVC 4 - 如何在视图中正确执行URL?

时间:2013-04-20 18:17:01

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing

我有一个MVC 4视图。其中一个属性是'Url'。我在此视图的字段中显示URL的值,当用户点击它时,我想执行该URL。我有这段代码:

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

问题是当用户点击此URL(我使用www.microsoft.com作为测试)时,我收到以下错误:

Requested URL
   http://localhost:52070/HousingBuyerSearch/Details/www.microsoft.com

所以看起来我做错了,因为它试图在控制器上调用一个方法。我仍然相当新,所以我不完全确定如何解决这个问题。

1 个答案:

答案 0 :(得分:4)

在这种情况下的问题是您的Url不以协议(IE http://)开头 - 因此浏览器会将此解释为您文档的相对网址。您需要为应用添加一些逻辑,以确保外部URL以协议开头,如下所示:

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