开发者

Generating absolute urls from Html.RouteLink

I'm using @Html.RouteLink("Validate", "ValidateEmail", new { email = Model.Email, key = Model.Key }) to generate a link that I send in an email to newly registered user. And as I was trying this out I discovered that, wops, it didn't generate absolute urls... This means I got a link like <a href="/Membership/Validate/email.to%40you.com?key=someKey">Validate</a>. However, as I send this link in an email it (of cause) won't work, so how do I go about ma开发者_Go百科king this better? Any simple solutions?


You can use the following overload:

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

Default is the route name as defined in Global.asax, http is the protocol (could be https if you wish, or simply use Request.Url.Scheme to get the containing page protocol and avoid ugly hardcodings), then an anonymous object containing the route values and that's pretty much all -> you will get an absolute url.

By the way all url generating helpers have overloads which take the protocol and hostname: use those for absolute urls.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜