24

写作

@Url.Content("~/Something/Something.html")

在剃刀渲染中

/AppFolder/Something/Something.html

有没有办法像http://www.something.com/AppFolder/Something/Something.html没有残暴的黑客一样呈现完整的 URL?(例如将协议和域存储在 中AppConfig,并将字符串连接到它)

有没有类似@Url.FullPath("~/asdf/asdf")或类似的助手?

4

4 回答 4

26

请参阅此博客文章以获取答案。

基本上,您需要做的所有事情都包括协议参数,例如

Url.Action("About", "Home", null, "http")
于 2011-10-11T19:30:56.890 回答
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;
    }
}
于 2011-11-08T09:19:47.950 回答
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>;
于 2017-07-03T11:22:07.253 回答
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

于 2019-04-11T15:23:13.210 回答