Sitefinity自定义字段的列表控件以及如何在MVC视图模板
问题描述:
我在Sitefinity 8.1增加了自定义字段列表控件使用它们,这是类型是相关数据,它的数据类型是Pages。字段名称是LinkedPageUrl。Sitefinity自定义字段的列表控件以及如何在MVC视图模板
完美地在后端工作,允许我从系统中选择一个页面并将其存储在特定的List Item中。
我在Sitefinity的文档中找不到任何地方,它解释了我将如何以编程方式在基于MVC的List.SimpleList.cshtml我自定义的视图模板中使用此字段。
我已经看到了这个被在新闻部件那里是每个新闻文章相关的图像用于:
<img src="@Html.Raw(item.Fields.RelatedImg.Fields.MediaUrl)" class="img-responsive" />
但我不接近这一点,因为我不能有丝毫的不想法从哪里开始......什么是模型结构,语法等
我的目标是将每个列表项呈现为一个锚点,锚点应该利用这个相关数据字段的URL为它的Href属性。
答
你可以做这样的事情在小部件的模板:
@foreach (var item in Model.Items)
{
<h3 @Html.InlineEditingAttributes(Model.ProviderName, Model.ContentType.FullName, (Guid)item.Fields.Id)
@Html.InlineEditingFieldAttributes("Title", "ShortText")>
@item.Fields.Title
</h3>
<ul>
@foreach (var listItem in ((ListViewModel)item).ListItemViewModel.Items)
{
<li @Html.InlineEditingAttributes(Model.ProviderName, ((ListViewModel)item).ListItemViewModel.ContentType.FullName, (Guid)listItem.Fields.Id)>
<div @Html.InlineEditingFieldAttributes("Title", "ShortText")>
@listItem.Fields.Title
</div>
<div class="sfMultiRelatedItmsWrp">
<h2 class="sfrelatedItmTitle">Related pages</h2>
@foreach (var link in listItem.Fields.LinkedPageUrl)
{
var node = PageManager.GetManager().GetPageNode(link.Fields.Id);
var url = PageExtesnsions.GetFullUrl(node);
<div>@link.Fields.Title - @url</div>
}
</div>
</li>
}
</ul>
}
这是因为你选择的塔每个清单项目可以选择多个页面。
编辑:确保包括下面的命名空间
@model Telerik.Sitefinity.Frontend.Mvc.Models.ContentListViewModel
@using Telerik.Sitefinity.Frontend.Lists.Mvc.Models;
@using Telerik.Sitefinity.Frontend.Mvc.Helpers;
@using Telerik.Sitefinity.Modules.Pages;
EDIT2:如果自定义字段允许被选定的只有1页,然后它应该是这样的:
<div class="@Model.CssClass">
@foreach (var item in Model.Items)
{
<h3 @Html.InlineEditingAttributes(Model.ProviderName, Model.ContentType.FullName, (Guid)item.Fields.Id)
@Html.InlineEditingFieldAttributes("Title", "ShortText")>
@item.Fields.Title
</h3>
<ul>
@foreach (var listItem in ((ListViewModel)item).ListItemViewModel.Items)
{
<li @Html.InlineEditingAttributes(Model.ProviderName, ((ListViewModel)item).ListItemViewModel.ContentType.FullName, (Guid)listItem.Fields.Id)>
<div @Html.InlineEditingFieldAttributes("Title", "ShortText")>
@listItem.Fields.Title
</div>
<div class="sfMultiRelatedItmsWrp">
<h2 class="sfrelatedItmTitle">Related pages</h2>
@{
var node = PageManager.GetManager().GetPageNode(listItem.Fields.LinkedPageUrl.Fields.Id);
var url = PageExtesnsions.GetFullUrl(node);
}
<div>@listItem.Fields.Title - @url</div>
</div>
</li>
}
</ul>
}
一个好的起点是this article
谢谢你的答案。如果只有单页,你会如何改变? 另外,你是否知道我可以阅读这个主题的任何文档,因为我想更好地理解它。 – Jacques
更新了单个页面的答案 –
非常感谢您的帮助! – Jacques