我是个新手,在渲染控制器的时候我遇到了一个问题。
从下面的图片中可以看到,我创建了一个“主布局”,并将占位符进行了填充。
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
@Html.Sitecore().Placeholder("content")
@Html.Sitecore().Placeholder("content1")
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</div>
之后,我创建了一个包含名称和文本属性的类驱动程序。
public class Driver
{
public HtmlString Name { get; set; }
public HtmlString Text { get; set; }
}第三张图片有一种获取驱动程序的方法。
public class DriverRepository
{
public Driver GetDriver()
{
var driver = new Driver();
var rendering = RenderingContext.Current.Rendering;
var datasource = rendering.Item;
driver.Name = new HtmlString(FieldRenderer.Render(datasource, "Name"));
driver.Text = new HtmlString(FieldRenderer.Render(datasource, "Text"));
return driver;
}
}在那之后,我创建了一个控制器驱动程序,其中包含了actionresult的功能。
public class DriverController : Controller {
// GET: Driver public ActionResult Featured() {
var repository = new DriverRepository();
var driver = repository.GetDriver();
return View(driver);
}
}并为控制器生成视图。
using Sitecore.Mvc
model TestMvcTaulantTutorial.Models.Driver
Name : Model.Name <br />
Text : Model.Text之后,我为驱动程序控制器创建了一个控制器呈现。
我将此呈现形式指定为主页,以便读取到content1。
但是当我部署时,它会返回这个错误。
传递到字典中的模型项的类型是'TestMvcTaulantTutorial.Models.Driver',但是该字典需要一个类型为‘Stecore.Mvc.Presentd.RenderingModel’的模型项。
发布于 2015-09-16 14:06:17
1.据我从您的描述中了解到,我的第一个假设是,您的呈现似乎没有重新部署,并且在您的部署目标上具有相同呈现的先前版本,因为字典需要一个'Sitecore.Mvc.Presentation.RenderingModel‘类型的模型项,而您在顶部明确指定了正确的模型:
model TestMvcTaulantTutorial.Models.Driver..。所以这可能是另一个正在进行的渲染。
2.另一种假设,请您将其替换为:
return View(driver);。。使用下面的у代码,显式地指定视图路径,以了解这是否是问题的根源:
return View("your_correct_view_path", driver);3.我还注意到,在您应该拥有的视图中,:
Name : @Model.Name <br/>
Text : @Model.Text而不是:
Name : Model.Name <br/>
Text : Model.Text发布于 2017-04-24 12:30:54
驱动程序类应该从RenderingModel类继承。
public class Driver: Sitecore.Mvc.Presentation.RenderingModel { .. }发布于 2017-05-18 10:54:25
我认为Rvan是对的。该错误导致您创建视图呈现,而不是控制器呈现。记住,在命名约定中,您不需要在控制器名称之后使用controller关键字。
https://stackoverflow.com/questions/32606286
复制相似问题