Sitecore MVC Sitecore.Mvc.Presentation.RenderingModel

时间:2015-09-16 10:39:25

标签: sitecore sitecore-mvc

我在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;
&#13;
&#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;。

3 个答案:

答案 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;背后的名字。