gpt4 book ai didi

asp.net-mvc - 使用 glassmapper 在 Sitecore MVC 中重用多个模型的 View

转载 作者:行者123 更新时间:2023-12-04 03:02:09 25 4
gpt4 key购买 nike

我无法确定如何使用 glassmapper 在我的 sitecore 8 解决方案中重用 View 。我有两个包含相同数据的对象,但字段的命名不同,具体取决于模板。例如,标题与标题。

当页面编辑器不是一个因素时,这相对简单,因为我可以将一个对象映射/转换到另一个对象,但这似乎会阻塞页面编辑器。

最明显的途径是使用接口(interface)和扩展方法,如here所述。 ,但这需要创建一个真正的厨房水槽接口(interface)。

还有其他建议吗?我不想复制 View 只是为了更改它使用的属性。

最佳答案

如果您使用 Controller 渲染,那么您可以定义如下接口(interface):

public interface ITitleAndBody : IGlassBase 
{
string Title {get; set;}
string Body {get; set;}
}

具体类型如下:

public class MyType1 : GlassBase, ITitleAndBody 
{
[SitecoreField("Title")]
public virtual int Title {get; set;}

[SitecoreField("Body")]
public virtual string Body {get; set;}
}

public class MyType2 : MyType1
{
[SitecoreField("Header")]
public override int Title {get; set;}
}

您将需要两个指向同一 View 的 Controller 操作:

public ActionResult MyType1()
{
return PartialView("/Views/MyView.cshtml", SitecoreContext.GetCurrentItem<MyType1>());
}

public ActionResult MyType2()
{
return PartialView("/Views/MyView.cshtml", SitecoreContext.GetCurrentItem<MyType2>());
}

并在 View 本身中使用接口(interface)作为模型:

@inherits Glass.Mapper.Sc.Web.Mvc.GlassView<ITitleAndBody>

<div>@Editable(Model, x => x.Title)</div>
<p>@Editable(Model, x => x.Body)</p>

这是未经测试的代码。当然,使用 View 渲染会更好。

关于asp.net-mvc - 使用 glassmapper 在 Sitecore MVC 中重用多个模型的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32260408/

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