gpt4 book ai didi

asp.net - 呈现任意数量的异构项目的最佳方法?

转载 作者:行者123 更新时间:2023-12-04 06:17:16 24 4
gpt4 key购买 nike

我的网站上有一个结帐页面,其中列出了客户正在购买的商品……在基本列表下方是“详细发票”部分,他们可以在其中查看每个商品的具体信息。到目前为止,我只有两种不同类型的可以购买的元素,所以详细的 list 很容易处理。现在我添加了四个额外的、完全不同的可购买的东西......所以问题是:使用 Sitecore 子布局处理这种渲染的好方法是什么? (目前,我只使用中继器并隐藏/显示适当的字段)

好消息是,对于订单中的每个行项目,都有一个关联的 Sitecore 项目实例。如果 Sitecore API 更适合面向对象的方法,我可能会在我的每个相关对象类型上创建一个 Render() 方法。但当然,它们都是 Sitecore.Data.Items.Item 对象。子类项目?对于这项任务来说,这似乎有点矫枉过正......

我考虑的是每个不同项目类型的子布局/用户控件......然后将它们动态添加到发票页面上的占位符。这似乎是合理的......想法?缺点是丑陋的代码必须将用户控件与项目相匹配......也许基于 TemplateID?

无论如何,只是在这里寻找一些建议。

最佳答案

构建类来表示 Sitecore 数据并不是一个不合理的想法。这是一个完美的场景。每当我构建项目时,我总是使用 Custom Item Generator 生成类。以防我需要特定于模板的字段访问。我也将所有内容都作为子布局来做,这样我就可以看到你的困境。

每个产品的所有/大部分字段都是唯一的吗?您没有每个产品实例使用的通用产品模板吗?

这些是我自己能想到的选项(最差到最好的 IMO):

  • 创建一个类来表示每个唯一模板。 Custom Item Generator可能有效,但第一次可能会让您感到困惑。您始终可以创建自己的类,在其中将 Sitecore 项传递给构造函数并创建属性以访问字段。然后使用常规的 .NET 控件并将数据绑定(bind)到前端,具体取决于您的项目使用的模板并使用模板的强类型类。这可能是许多 if-else 的杂乱代码的。
  • 为 Sitecore 中的每个独特模板创建一个独特的子布局。在循环遍历项目的中继器中,根据项目的模板,使用 new Sublayout() 将正确的子布局添加到占位符并设置 DataSource作为 Sitecore 项目(这里是 code to access the DataSource )。这样你就可以将实现抽象到每个唯一的模板中。
  • 为#1 中提到的每个模板创建类,但使用接口(interface)抽象它们。在你的中继器的ItemDataBound ,通过接口(interface)实现数据。这在很大程度上取决于字段如何在模板之间进行比较和对比。如果您可以强制自己将唯一字段减少到接口(interface)的成员中,那么表示模板的每个类都可以实现您的接口(interface)。只要您继续实现接口(interface),这允许将来添加更多独特的模板。
  • 关于asp.net - 呈现任意数量的异构项目的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7072198/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com