如何解决如何在 EPiServer 中为 linkItemCollection 自定义默认视图
我使用的是 EPiServer 版本 11,我要求当使用 PropertyFor() 方法呈现类型为 linkItemCollection 的属性时,我需要添加一些自定义属性(如果目标为空,则基于条件)以生成超链接。>
@Html.PropertyFor(x => x.Layout.LinksCollection)
我有在视图中的 displayTemplates 下创建自定义视图并添加新视图的想法。我的查询是如何获取 linkItemCollection 的默认模板以启动它?
解决方法
最简单的选择是自己动手,不用担心属性,唯一的小问题是您可能无法进行内联编辑。
按照你的路线走
[UIHint("MyView")]
[Display(
GroupName = SystemTabNames.Settings,Order = 100)]
public virtual LinkItemCollection MyProperty{ get; set; }
在 Views/Shared/DisplayTemplates 添加模板 MyView.cshtml
,您可以自己完全控制渲染,而不是使用 PropertyFor。
// FullRefreshPropertiesMetaData asks on-page edit to reload the page
// to run the following custom rendering again after the value has changed.
@Html.FullRefreshPropertiesMetaData(new []{ "RelatedContentLinks" })
// EditAttributes enables on page-edit when you have custom rendering.
<p @Html.EditAttributes(m => m.CurrentPage.RelatedContentLinks) >
@if (Model.CurrentPage.RelatedContentLinks != null)
{
<span>See also:</span>
foreach (LinkItem item in Model.CurrentPage.RelatedContentLinks)
{
<a href="@UrlResolver.Current.GetUrl(item.Href)">@item.Text</a> }
}
</p>
,
感谢您对此的意见。
我设法解决了这个问题,如下所示。
public static MvcHtmlString LinkItemCollectionFor<TModel,TValue>(this HtmlHelper<TModel> html,Expression<Func<TModel,TValue>> expression)
{
MvcHtmlString result = PropertyExtensions.PropertyFor(html,expression);
return MvcHtmlString.Create(result.ToString().Replace("target=\"_blank\"","target=\"_blank\" rel=\"noopener noreferrer\""));
}
希望对某人有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。