首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从ASP.NET MVC操作获取绝对URL

从ASP.NET MVC操作获取绝对URL
EN

Stack Overflow用户
提问于 2011-09-14 01:54:40
回答 5查看 93.3K关注 0票数 80

这可能是一个空洞的问题,但我找不到明确的迹象。我在一个MVC3 web应用程序中有一个POCO类,它的唯一目的是管理服务器中某些文件的备份。通常,它会创建一个备份,并将文件名返回给控制器,后者会发送一封电子邮件,其中包含下载该文件的URL。这可以很好地工作,但我不能构建要发送的绝对URL。无论我使用哪个函数,我都会得到一个相对的网址,比如/Backup/TheFile.zip,而不是。我试过了:

代码语言:javascript
复制
VirtualPathUtility.ToAbsolute("~/Backup/SomeFile.zip");
HttpRuntime.AppDomainAppVirtualPath + "/Backup/SomeFile.zip";
Url.Content("~/Backup/SomeFile.zip");

但是它们都返回类似于/Backup/SomeFile.zip的内容。有什么想法吗?

EN

回答 5

Stack Overflow用户

发布于 2012-05-10 07:50:20

在控制器中:

代码语言:javascript
复制
var path = VirtualPathUtility.ToAbsolute(pathFromPoco);
var url = new Uri(Request.Url, path).AbsoluteUri
票数 35
EN

Stack Overflow用户

发布于 2014-06-01 16:42:17

这对我来说很有效:

代码语言:javascript
复制
using System;
using System.Web;
using System.Web.Mvc;

public static class UrlExtensions
{
    public static string Content(this UrlHelper urlHelper, string contentPath, bool toAbsolute = false)
    {
        var path = urlHelper.Content(contentPath);
        var url = new Uri(HttpContext.Current.Request.Url, path);

        return toAbsolute ? url.AbsoluteUri : path;
    }
}

cshtml中的用法:

代码语言:javascript
复制
@Url.Content("~/Scripts/flot/jquery.flot.menuBar.js", true)
票数 19
EN

Stack Overflow用户

发布于 2013-02-19 13:36:00

如果hostprotocol参数不为空,MVC4中的内置帮助器就会创建绝对URL。有关在视图中使用的扩展方法的示例,请参阅this answer here

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7406258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档