微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 EPiServer 中为 linkItemCollection 自定义默认视图

如何解决如何在 EPiServer 中为 linkItemCollection 自定义默认视图

我使用的是 EPiServer 版本 11,我要求当使用 PropertyFor() 方法呈现类型为 linkItemCollection 的属性时,我需要添加一些自定义属性(如果目标为空,则基于条件)以生成链接。>

@Html.PropertyFor(x => x.Layout.LinksCollection)

我有在视图中的 displayTemplates 下创建自定义视图并添加新视图的想法。我的查询是如何获取 linkItemCollection 的认模板以启动它?

解决方法

最简单的选择是自己动手,不用担心属性,唯一的小问题是您可能无法进行内联编辑。

https://www.jondjones.com/learn-episerver-cms/episerver-developers-tutorials/episerver-properties/how-to-display-a-list-of-links-in-episerver/

按照你的路线走

[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>

取自EPi documentation

,

感谢您对此的意见。

我设法解决了这个问题,如下所示。

 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?