无法使用剃须刀在Umbraco 7中显示图像

时间:2015-02-03 14:48:59

标签: asp.net asp.net-mvc razor umbraco umbraco7

我已经使用媒体选择器作为该类型的数据类型,用户将为其选择他们想要的图像作为交易图像。

但由于某些原因,我无法使用剃刀语法来显示图像。如果我制作一个If语句来检查页面是否包含图像,那么它就不会。我认为这是一个问题,因为我误解了一些事情。

我目前的剃刀声明:

<img src="@Umbraco.TypedMedia(Model.Content.GetPropertyValue("deal1image")).Url" />

以上代码不会显示任何内容。

希望你们中的任何一个人都可以指导我做错的事情。我错过的东西。

这是我当前的home.cshtml的样子:

 @inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
    Layout = "Master.cshtml";
}
<div class="container">
    <div class="col-md-4">
        <!--Image here-->
        <img src="@Umbraco.Media(CurrentPage.deal1image).Url" />


        <div class="thumbnail thumbnailcustom thumbnailbg1">
            <h3>@Umbraco.Field("dealtitle1")</h3>
            <p>@Umbraco.Field("dealdescription1")</p>
        </div>
    </div>
    <div class="col-md-4">
        <!--Image here-->
        <div class="thumbnail thumbnailcustom thumbnailbg2">
            <h3>@Umbraco.Field("dealtitle2")</h3>
            <p>@Umbraco.Field("dealdescription2")</p>
        </div>
    </div>
    <div class="col-md-4">
        <!--Image here-->
        <div class="thumbnail thumbnailcustom thumbnailbg3">
            <h3>@Umbraco.Field("dealtitle3")</h3>
            <p>@Umbraco.Field("dealdescription3")</p>
        </div>
    </div>
</div>

4 个答案:

答案 0 :(得分:2)

您需要使用Umbraco.Media来获取媒体。所以喜欢这个

<img src="@Umbraco.Media(Model.Content.GetPropertyValue("deal1image").ToString()).Url" />

或者

<img src="@Umbraco.Media(CurrentPage.deal1image).Url" />

答案 1 :(得分:1)

使用Umbraco.Media的一个例子:

var myPage = CurrentPage.AncestorsOrSelf().Where("DocumentTypeAlias == @0", "yourPageAlias").First();

Umbraco.Media(myPage.myImage.ToString()).Url

答案 2 :(得分:0)

Link 我们的Umbraco 提供了两种解决方案:

<强>类型的:

@if (Model.Content.HasValue("caseStudyImages"))
{
    var caseStudyImagesList = Model.Content.GetPropertyValue<string>("caseStudyImages").Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse);
    var caseStudyImagesCollection = Umbraco.TypedMedia(caseStudyImagesList).Where(x => x != null);

    foreach (var caseStudyImage in caseStudyImagesCollection)
        {      
            <img src="@caseStudyImage.Url" style="width:300px;height:300px" />      
        }                                                               
}

<强>动态:

@if (CurrentPage.HasValue("caseStudyImages"))
{
    var caseStudyImagesList = CurrentPage.CaseStudyImages.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
    var caseStudyImagesCollection = Umbraco.Media(caseStudyImagesList);

    foreach (var caseStudyImage in caseStudyImagesCollection)
    {
        <img src="@caseStudyImage.Url" style="width:300px;height:300px" />
    }
}

另外,请仔细检查您的媒体选择器数据类型别名。错别字在这部分很常见。

答案 3 :(得分:0)

与其他答案相比,这可能有点笨拙,但这就是我现在所拥有的。

var imageId = Model.Content.GetPropertyValue<int>("eventPoster"); // gets node id
var evId = evpId.Id; // gets image id
var evMd = Umbraco.Media(evId); // I believe this turns the id into a string
var evUrl = evMd.Url; // gets the url of the string