写作
@Url.Content("~/Something/Something.html")
在剃刀渲染中
/AppFolder/Something/Something.html
有没有办法像http://www.something.com/AppFolder/Something/Something.html
一样呈现完整的网址而不会出现残暴的黑客行为? (比如将协议和域存储在AppConfig
中,并将字符串连接到它)
是否有像@Url.FullPath("~/asdf/asdf")
或类似的帮手?
答案 0 :(得分:24)
答案 1 :(得分:23)
@ Url.RouteURL()不安静回答这个问题。它适用于命名路由,但不适用于任意虚拟路径。 这是生成完整出站URL的快速帮助方法。您可以根据所需的控制程度为各种方案(http [s])创建重载。
public static class UrlHelperExtension
{
public static string ContentFullPath(this UrlHelper url,string virtualPath)
{
var result = string.Empty;
Uri requestUrl = url.RequestContext.HttpContext.Request.Url;
result = string.Format("{0}://{1}{2}",
requestUrl.Scheme,
requestUrl.Authority,
VirtualPathUtility.ToAbsolute(virtualPath));
return result;
}
}
答案 2 :(得分:0)
对于任何需要在WebAPI 2.2和/或MVC5中构建URL的人来说,这对我有用:
// works in a controller
var requestUri = this.Request.RequestUri;
// just the http/s and the hostname; ymmv
string baseUrl = requestUri.Scheme + "://" + requestUri.Authority + "/";
// build your url for whatever purpose you need it for
string url = baseUrl + "SomeOtherController?id=" + <some_magic_value>;
答案 3 :(得分:0)
您可以使用助手来生成完整的URL,包括协议。请注意url.Action
中的第一个小写字母。
var url = new UrlHelper(System.Web.HttpContext.Current.Request.RequestContext);
var fullUrl = url.Action("YourAction", "YourController", new { id = something }, protocol: System.Web.HttpContext.Current.Request.Url.Scheme);
输出
https://www.yourdomain.com/YourController/YourAction?id=something