从Html.RouteLink生成绝对URL

时间:2010-12-08 19:01:35

标签: asp.net-mvc routes html-helper asp.net-mvc-3

我正在使用@Html.RouteLink("Validate", "ValidateEmail", new { email = Model.Email, key = Model.Key })生成我通过电子邮件发送给新注册用户的链接。当我尝试这个时,我发现,wops,它没有生成绝对的URL ...这意味着我得到了像<a href="/Membership/Validate/email.to%40you.com?key=someKey">Validate</a>这样的链接。但是,当我在电子邮件中发送此链接时(原因)将无法正常工作,那么我该如何改进呢?任何简单的解决方案?

1 个答案:

答案 0 :(得分:7)

您可以使用以下overload

@Html.RouteLink(
    "click me", 
    "Default", 
    "http", 
    null, 
    null, 
    new { 
        email = Model.Email, 
        key = Model.Key, 
        controller = "Home", 
        action = "Index" 
    }, 
    null)

DefaultGlobal.asax中定义的路由名称,http是协议(如果您愿意,可以是https,或者只是使用Request.Url.Scheme来获取包含页面协议并避免丑陋的硬编码),然后是一个包含路由值的匿名对象,几乎所有 - &gt;你会得到一个绝对的网址。

顺便说一下,所有生成助手的url都有重载,这些重载采用协议和主机名:将它们用于绝对URL。