Razor 如何从渲染图像URL';剃刀怎么了?
在Umbraco(4.7.0)中,我使用一个小的Razor脚本来渲染图像属性中的图像,但即使此方法接收到正确的信息,图像也不会显示;始终在URL前面生成一个平铺,但这实际上阻止了图像的显示。是否有一种方法(或者可能是一种完全呈现媒体的替代方法)来移除瓷砖 这基本上就是razor脚本中的内容,primaryImage是图像属性:Razor 如何从渲染图像URL';剃刀怎么了?,razor,umbraco,Razor,Umbraco,在Umbraco(4.7.0)中,我使用一个小的Razor脚本来渲染图像属性中的图像,但即使此方法接收到正确的信息,图像也不会显示;始终在URL前面生成一个平铺,但这实际上阻止了图像的显示。是否有一种方法(或者可能是一种完全呈现媒体的替代方法)来移除瓷砖 这基本上就是razor脚本中的内容,primaryImage是图像属性: <img class="primary-image" src="@Model.MediaById(Model.primaryImage).umbracoFile"
<img class="primary-image" src="@Model.MediaById(Model.primaryImage).umbracoFile" alt="@Model.MediaById(Model.primaryImage).Name">
此代码段实际上位于foreach循环中,用于在属性具有图像时呈现图像。如果使用代码块,则可以将媒体图像作为DynamicMedia对象获取,类似于以下内容(尚未测试)-媒体对象的NiceUrl属性也将是非平铺url:
if(Model.HasProperty("primaryImage") && !String.IsNullOrEmpty(Model.primaryImage.ToString()))
{
int mediaId = Convert.ToInt32(Model.getProperty("primaryImage").Value.ToString());
var mediaNode = new umbraco.cms.businesslogic.media.Media(mediaId);
string mediaUrl = mediaNode.getProperty("umbracoFile").Value.ToString();
string mediaName = mediaNode.Text;
<img src="@mediaUrl" alt="@mediaName" />
}
if(Model.HasProperty(“primaryImage”)&&!String.IsNullOrEmpty(Model.primaryImage.ToString())
{
int mediaId=Convert.ToInt32(Model.getProperty(“primaryImage”).Value.ToString();
var mediaNode=new umbraco.cms.businesslogic.media.media(mediaId);
字符串mediaUrl=mediaNode.getProperty(“umbracoFile”).Value.ToString();
字符串mediaName=mediaNode.Text;
}
编辑
只是尝试了一些与您的代码非常相似的东西,效果很好,因此可能是配置问题:
@{
var articleFirst = Model.umbNewsArticle.Take(1);
var article1 = articleFirst.FirstOrDefault();
<img src="@article1.MediaById(article1.feature1Image).umbracoFile" alt="@article1.MediaById(article1.feature1Image).Text" height="63" width="78" />
}
@{
var articleFirst=Model.umbNewsArticle.Take(1);
var article1=articleFirst.FirstOrDefault();
}
假设生成~/Path/To/Image.jpg的代码是:
@Model.MediaById(Model.primaryImage).umbracoFile
您可以将结果包装在调用中,调用将结果转换为站点相对路径。例如:
@* Assuming that Model.MediaById(Model.primaryImage).umbracoFile results in
A string similar to ~/images/foo.jpg, the following will work: *@
<img src="@Url.Content(Model.MediaById(Model.primaryImage).umbracoFile)" ... />
将其包装在@Url.Content()
中,是否可能将其解析为与站点相关的Url?e、 g.src=“@Url.Content(Model.MediaById(Model.primaryImage.ubracoFile)”
(只要这就是生成~/Path/to/File.jpg
值的原因。)嘿,布拉德,谢谢你的回答!听起来正是我需要的,但我收到了错误“error CS0103:name'Url'在当前上下文中不存在”。有什么想法吗?如果它还没有作为条目列在web.config
中,您可能需要将@using System.Web.Mvc
添加到页面顶部以查看该方法。@BradChristie您是否要将您的评论作为一个答案-我知道您不需要代表,但我想升级您的commentshow,以便在umbraco的宏脚本中使用@Url.Content?
@{
var media = Model.MediaById(Model.primaryImage);
if (media != null){
<img src="@Url.Content(media.umbracoFile)" ... />
}
}