在视图文件中访问自定义字段时出现问题
Issue accessing Custom Field in view file
在构建我的自定义博客列表视图文件 (Mvc/Views/BlogPost/List.BlogPostList.cshtml
) 时,我正在访问添加到 CMS 博客部分的 "Custom Fields for posts" 设置中的 属性。
我们添加了一个图像字段,并在页面上的项目循环输出 Telerik.Sitefinity.Frontend.Mvc.Models.ItemViewModel
中像 @item.Fields.BlogHeaderImage
一样访问它。
我是否缺少一层深度或其他方法来访问这些字段值?
代码大部分只是 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>
}
页面输出的字符串引用的class:
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);
}
您可能想先检查一下
@item.Fields.BlogHeaderImage 为 null
然后
<img src="@item.Fields.BlogHeaderImage.Fields.MediaUrl"
alt="@item.Fields.BlogHeaderImage.Fields.Title" />
在构建我的自定义博客列表视图文件 (Mvc/Views/BlogPost/List.BlogPostList.cshtml
) 时,我正在访问添加到 CMS 博客部分的 "Custom Fields for posts" 设置中的 属性。
我们添加了一个图像字段,并在页面上的项目循环输出 Telerik.Sitefinity.Frontend.Mvc.Models.ItemViewModel
中像 @item.Fields.BlogHeaderImage
一样访问它。
我是否缺少一层深度或其他方法来访问这些字段值?
代码大部分只是 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>
}
页面输出的字符串引用的class:
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);
}
您可能想先检查一下 @item.Fields.BlogHeaderImage 为 null
然后
<img src="@item.Fields.BlogHeaderImage.Fields.MediaUrl"
alt="@item.Fields.BlogHeaderImage.Fields.Title" />