Razor 如何从渲染图像URL';剃刀怎么了?

Razor 如何从渲染图像URL';剃刀怎么了?,razor,umbraco,Razor,Umbraco,在Umbraco(4.7.0)中,我使用一个小的Razor脚本来渲染图像属性中的图像,但即使此方法接收到正确的信息,图像也不会显示;始终在URL前面生成一个平铺,但这实际上阻止了图像的显示。是否有一种方法(或者可能是一种完全呈现媒体的替代方法)来移除瓷砖 这基本上就是razor脚本中的内容,primaryImage是图像属性: <img class="primary-image" src="@Model.MediaById(Model.primaryImage).umbracoFile"

在Umbraco(4.7.0)中,我使用一个小的Razor脚本来渲染图像属性中的图像,但即使此方法接收到正确的信息,图像也不会显示;始终在URL前面生成一个平铺,但这实际上阻止了图像的显示。是否有一种方法(或者可能是一种完全呈现媒体的替代方法)来移除瓷砖

这基本上就是razor脚本中的内容,primaryImage是图像属性:

<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)" ... />
  }
}