gpt4 book ai didi

asp.net-mvc-3 - 传入字典的模型项的类型为 'Sitecore.Mvc.Presentation.RenderingModel' ,但此字典需要类型为 'X' 的模型项

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

我正在使用 Sitecore 7 和 ASP.NET-MVC 3 构建解决方案,并尝试使用 this blog post by john west 中所述的自定义模型类.

我在这里看到了其他几个关于 ASP.NET-MVC(没有 Sitecore)报告类似错误的其他问题,通常与在 Controller 代码中传递错误类型的对象有关,或者存在配置错误 \Views\web.config文件,但似乎都不是这里的问题。

最佳答案

当您创建 View 渲染(可能是其他的,但我没有尝试过)并且您尚未在 sitecore 中设置模型时,会导致此问题,因此 sitecore 正在传递其默认模型。

要解决此问题,您必须转到布局部分并创建一个模型。
这是 sitecore '/sitecore/layout/Models/' 中的路径,在此文件夹中创建一个 'Model' 项目,并在模型类型字段中添加对模型的引用,格式为“my.model.namespace, my.程序集' 不带引号。

您的模型需要继承“Sitecore.Mvc.Presentation.IRenderingModel”,这会强制您实现“Initialize”方法,在这里您将来自 sitecore 项目的数据填充到模型的属性中。这是一个示例模型...

namespace Custom.Models.ContentBlocks
{
using Sitecore.Data.Fields;
using Sitecore.Mvc.Presentation;

public class BgImageTitleText : IRenderingModel
{

public string Title { get; set; }

public string BgImage { get; set; }

public string BgImageAlt { get; set; }

public string BgColour { get; set; }

public string CtaText { get; set; }

public string CtaLink { get; set; }

public void Initialize(Rendering rendering)
{
var dataSourceItem = rendering.Item;
if (dataSourceItem == null)
{
return;
}

ImageField bgImage = dataSourceItem.Fields[Fields.ContentBlocks.BgImageTitleTextItem.BgImage];
if (bgImage != null && bgImage.MediaItem != null)
{
this.BgImageAlt = bgImage.Alt;
this.BgImage = Sitecore.Resources.Media.MediaManager.GetMediaUrl(bgImage.MediaItem);
}

var title = dataSourceItem.Fields[Fields.ContentBlocks.BgImageTitleTextItem.Title];
if (title != null)
{
this.Title = title.Value;
}

var link = (LinkField)dataSourceItem.Fields[Fields.ContentBlocks.BgImageTitleTextItem.CtaLink];
if (link != null)
{
this.CtaLink = link.GetLinkFieldUrl();
}

var ctaText = dataSourceItem.Fields[Fields.ContentBlocks.BgImageTitleTextItem.CtaText];
if (ctaText != null)
{
this.CtaText = ctaText.Value;
}

var bgColour = dataSourceItem.Fields[Fields.ContentBlocks.BgImageTitleTextItem.BgColour];
if (bgColour != null)
{
this.BgColour = bgColour.Value;
}
}
}
}

然后您必须转到您的 View 渲染(或可能的其他类型的渲染),并在“模型”字段中单击插入链接并单击新创建的模型。

关于asp.net-mvc-3 - 传入字典的模型项的类型为 'Sitecore.Mvc.Presentation.RenderingModel' ,但此字典需要类型为 'X' 的模型项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18837256/

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