0

在构建我的自定义博客列表视图文件 ( Mvc/Views/BlogPost/List.BlogPostList.cshtml) 时,我正在访问一个添加到 CMS 博客部分的“自定义帖子字段”设置中的属性。

我们添加了一个图像字段,并像@item.Fields.BlogHeaderImage在页面上的项目循环输出中一样访问它Telerik.Sitefinity.Frontend.Mvc.Models.ItemViewModel

我是否错过了访问这些字段值的一层深度或其他方法?


代码大多只是 Bootstrap 博客列表 .cshtml 文件:

@foreach (var item in Model.Items)
    {
        var navigateUrl = HyperLinkHelpers.GetDetailPageUrl(item, ViewBag.DetailsPageId, ViewBag.OpenInSamePage, Model.UrlKeyPrefix);

        <li @Html.InlineEditingAttributes(Model.ProviderName, Model.ContentType.FullName, (Guid)item.Fields.Id)>
            <a href="@navigateUrl">
                <img src="@item.Fields.BlogHeaderImage" alt="@item.Fields.Title" />
                <!-- ^^^Line in question^^^ -->
            </a> 
            <h3>
                <a @Html.InlineEditingFieldAttributes("Title", "ShortText") href="@navigateUrl">@item.Fields.Title</a>
            </h3>

            <div @Html.InlineEditingFieldAttributes("Summary", "ShortText")>@Html.Raw(item.Fields.Summary)</div>

        </li>
    }

页面输出的字符串引用的类:

public class ItemViewModel
{
    public ItemViewModel(IDataItem item);

    public IDataItem DataItem { get; }
    public string DefaultUrl { get; }
    [Dynamic]
    public dynamic Fields { get; }
    public object Identifier { get; }

    public virtual string GetAddressString(string fieldName, string format);
    public virtual string GetBool(string fieldName);
    public virtual string GetDateTime(string fieldName, string format);
    public virtual FlatTaxon GetFlatTaxon(string fieldName);
    public virtual IList<FlatTaxon> GetFlatTaxons(string fieldName);
    public virtual HierarchicalTaxon GetHierarchicalTaxon(string fieldName);
    public virtual IList<HierarchicalTaxon> GetHierarchicalTaxons(string fieldName);
    public virtual string GetMultipleChoiceValueString(string fieldName);
    public virtual string GetPrice(string fieldName, string format);
    public virtual ItemViewModel RelatedItem(string fieldName);
    public virtual IEnumerable<ItemViewModel> RelatedItems(string fieldName);
    public virtual string SerializeToJson(string fieldName);
}
4

1 回答 1

2

您可能想先检查 @item.Fields.BlogHeaderImage 是否为空

然后做

<img src="@item.Fields.BlogHeaderImage.Fields.MediaUrl" 
alt="@item.Fields.BlogHeaderImage.Fields.Title" />
于 2018-01-23T22:30:52.677 回答