是否有获取操作的完整 URL 的内置方法?
我正在寻找类似的东西GetFullUrl("Action", "Controller")会返回类似的东西http://www.fred.com/Controller/Action。
GetFullUrl("Action", "Controller")
http://www.fred.com/Controller/Action
我正在寻找这个的原因是避免在生成的自动电子邮件中对 URL 进行硬编码,以便始终可以相对于站点的当前位置生成 URL。
Url.Action 有一个重载,它将您想要的协议(例如 http、https)作为参数 - 如果您指定它,您将获得一个完全限定的 URL。
这是一个在 action 方法中使用当前请求协议的示例:
var fullUrl = this.Url.Action("Edit", "Posts", new { id = 5 }, this.Request.Url.Scheme);
HtmlHelper (@Html) 还具有 ActionLink 方法的重载,您可以在 razor 中使用它来创建锚元素,但它还需要 hostName 和 fragment 参数。所以我会选择再次使用@Url.Action:
<span> Copy <a href='@Url.Action("About", "Home", null, Request.Url.Scheme)'>this link</a> and post it anywhere on the internet! </span>