我在sitecore很新,我在渲染控制器时遇到了问题。
从下面的图片可以看出,我创建了一个" Mainlayout"并推出占位符。
<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>
&#13;
之后我创建了一个包含Name和Text属性的类Driver
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
之后在sitecore中我为Driver controller
创建了一个控制器渲染我指定主页此渲染要读取到content1
但是当我部署它时会返回此错误
传递到字典中的模型项是类型的 &#39; TestMvcTaulantTutorial.Models.Driver&#39;,但这本词典需要一个 型号项目&#39; Sitecore.Mvc.Presentation.RenderingModel&#39;。
答案 0 :(得分:1)
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
答案 1 :(得分:0)
Driver类应该继承自RenderingModel类。
public class Driver: Sitecore.Mvc.Presentation.RenderingModel { .. }
答案 2 :(得分:0)
我认为Rvan是对的。该错误导致您创建视图而不是控制器渲染。请记住,控制器渲染控制器的名称并不需要&#34; controller&#34;背后的名字。