gpt4 book ai didi

c# - 传入字典的模型项是 'Umbraco.Web.Models.RenderModel' 类型的,但是这个字典需要一个 'TestModel' 类型的模型项

转载 作者:太空狗 更新时间:2023-10-30 00:40:40 25 4
gpt4 key购买 nike

我试图将新的 MVC 模板添加到过去几个月我一直在开发的现有网站。我有几个工作正常的自定义 Controller /模型设置。今天我尝试添加另一个新模板,但遇到了这个我无法克服的错误。 Umbraco 版本为 7.04。

一、错误:

http://i.imgur.com/iH6cmUD.png

~/Views/MVCTest.cshtml

@inherits Umbraco.Web.Mvc.UmbracoViewPage<TestModel>
@{
Layout = null;
}
<h1>Hello, World!</h1>

~/App_Code/Test/TestController.cs

using System.Web.Mvc;
using Umbraco.Web.Models;
using Umbraco.Web.Mvc;

public class TestController : RenderMvcController {
public override ActionResult Index(RenderModel model) {
var test = new TestModel(model.Content, model.CurrentCulture);
return base.Index(test);
}
}

~/App_Code/Test/TestModel.cs

using System.Globalization;
using Umbraco.Core.Models;
using Umbraco.Web.Models;

public class TestModel : RenderModel {
public TestModel(IPublishedContent content, CultureInfo culture)
: base(content, culture) {

}

}

有人看到任何明显的问题吗?这真的很奇怪,因为我有基本上相同的代码用于其他一些自定义模型和 Controller ,所以我完全不明白为什么任何新类型都会给我这个错误。

最佳答案

你的代码几乎是正确的,问题是你的 View 被称为 MVCtest.cshtml 因为大概你的文档类型被称为 MVCtest,但是你的 Controller 只是被称为 TestController 而不是 MVCTestController

Umbraco 的路由非常具体,因为它将通过具有匹配名称的 Controller 路由特定文档类型的所有流量。

此外,您不需要return base.Index(test);,只需return CurrentTemplate(test);

另外一点是,Umbraco 默认会尝试通过 Index 操作进行路由,除非您有与模板名称匹配的操作。因此,您可以有多个模板,每个模板都有单独的操作。

关于c# - 传入字典的模型项是 'Umbraco.Web.Models.RenderModel' 类型的,但是这个字典需要一个 'TestModel' 类型的模型项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25494514/

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