如何使用razor获取umbraco中的绝对媒体文件路径?
我尝试了以下razor代码:如何使用razor获取umbraco中的绝对媒体文件路径?,razor,umbraco,Razor,Umbraco,我尝试了以下razor代码: @room.Media("summaryImage","umbracoFile") 但是我得到了类似于~/media/155/lux.jpg的东西,我如何删除开头的~来获得服务器路径,即/media/155/lux.jpg或http://some_url/media/155/lux.jpg 编辑: 我试过了 @{ dynamic summaryImagePath = room.Media("summaryImage","umbracoFile"); } @Pa
@room.Media("summaryImage","umbracoFile")
但是我得到了类似于~/media/155/lux.jpg
的东西,我如何删除开头的~
来获得服务器路径,即/media/155/lux.jpg
或http://some_url/media/155/lux.jpg
编辑:
我试过了
@{
dynamic summaryImagePath = room.Media("summaryImage","umbracoFile");
}
@Page.ResolveUrl(@summaryImagePath)
及
但我一直在犯错误:
Error loading Razor Script Cannot perform runtime binding on a null reference
即使@room.Media(“summaryImage”、“umbracoFile”)
给出了~/Media/155/lux.jpg
有什么想法吗?我不确定Umbraco中是否有解决方案,我只想使用.NET framework。使用ASP.NET,您可以使用将虚拟路径解析为物理文件路径:
@HttpContext.Current.Server.MapPath(room.Media("summaryImage","umbracoFile"))
编辑:
如果要查找绝对URL,可以使用以下变体之一:
@Page.ResolveUrl(room.Media("summaryImage","umbracoFile"))
或
您可能想阅读此内容。使用此内容,我得到了类似于C:\inetpub\wwwroot[path to media]\media\155\lux.jpg的内容。我只需要/media/155/lux.jpg位。我已经更新了问题以反映这一点。Page.ResolveUrl给了我一个空引用错误,但virtualPath实用性.ToAbsolute工作得非常出色!可能是因为razor脚本没有如下所示的页面上下文:
@Page.ResolveUrl(room.Media("summaryImage","umbracoFile"))
@VirtualPathUtility.ToAbsolute(room.Media("summaryImage","umbracoFile"))