这可能是一个空洞的问题,但我找不到明确的迹象。我在一个MVC3 web应用程序中有一个POCO类,它的唯一目的是管理服务器中某些文件的备份。通常,它会创建一个备份,并将文件名返回给控制器,后者会发送一封电子邮件,其中包含下载该文件的URL。这可以很好地工作,但我不能构建要发送的绝对URL。无论我使用哪个函数,我都会得到一个相对的网址,比如/Backup/TheFile.zip,而不是。我试过了:
VirtualPathUtility.ToAbsolute("~/Backup/SomeFile.zip");
HttpRuntime.AppDomainAppVirtualPath + "/Backup/SomeFile.zip";
Url.Content("~/Backup/SomeFile.zip");
但是它们都返回类似于/Backup/SomeFile.zip的内容。有什么想法吗?
发布于 2012-05-10 07:50:20
在控制器中:
var path = VirtualPathUtility.ToAbsolute(pathFromPoco);
var url = new Uri(Request.Url, path).AbsoluteUri
发布于 2014-06-01 16:42:17
这对我来说很有效:
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中的用法:
@Url.Content("~/Scripts/flot/jquery.flot.menuBar.js", true)
发布于 2013-02-19 13:36:00
如果host
或protocol
参数不为空,MVC4中的内置帮助器就会创建绝对URL。有关在视图中使用的扩展方法的示例,请参阅this answer here。
https://stackoverflow.com/questions/7406258
复制相似问题