首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sitecore Sitecore.Mvc.Presentation.RenderingModel

Sitecore Sitecore.Mvc.Presentation.RenderingModel
EN

Stack Overflow用户
提问于 2015-09-16 10:39:25
回答 3查看 3.4K关注 0票数 0

我是个新手,在渲染控制器的时候我遇到了一个问题。

从下面的图片中可以看到,我创建了一个“主布局”,并将占位符进行了填充。

代码语言:javascript
复制
  <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>

之后,我创建了一个包含名称和文本属性的类驱动程序。

代码语言:javascript
复制
public class Driver
  {
       public HtmlString  Name { get; set; }
       public HtmlString  Text { get; set; }
   }

第三张图片有一种获取驱动程序的方法。

代码语言:javascript
复制
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的功能。

代码语言:javascript
复制
public class DriverController : Controller {
// GET: Driver  public ActionResult Featured()    {
    var repository = new DriverRepository();

    var driver = repository.GetDriver();


    return View(driver);
}

}

并为控制器生成视图。

代码语言:javascript
复制
using Sitecore.Mvc 
model TestMvcTaulantTutorial.Models.Driver 

Name : Model.Name <br /> 
Text : Model.Text

之后,我为驱动程序控制器创建了一个控制器呈现。

我将此呈现形式指定为主页,以便读取到content1。

但是当我部署时,它会返回这个错误。

传递到字典中的模型项的类型是'TestMvcTaulantTutorial.Models.Driver',但是该字典需要一个类型为‘Stecore.Mvc.Presentd.RenderingModel’的模型项。

EN

回答 3

Stack Overflow用户

发布于 2015-09-16 14:06:17

1.据我从您的描述中了解到,我的第一个假设是,您的呈现似乎没有重新部署,并且在您的部署目标上具有相同呈现的先前版本,因为字典需要一个'Sitecore.Mvc.Presentation.RenderingModel‘类型的模型项,而您在顶部明确指定了正确的模型:

代码语言:javascript
复制
    model TestMvcTaulantTutorial.Models.Driver

..。所以这可能是另一个正在进行的渲染。

2.另一种假设,请您将其替换为:

代码语言:javascript
复制
    return View(driver);

。。使用下面的у代码,显式地指定视图路径,以了解这是否是问题的根源:

代码语言:javascript
复制
    return View("your_correct_view_path", driver);

3.我还注意到,在您应该拥有的视图中,:

代码语言:javascript
复制
    Name : @Model.Name <br/>
    Text : @Model.Text

而不是:

代码语言:javascript
复制
    Name : Model.Name <br/>
    Text : Model.Text
票数 1
EN

Stack Overflow用户

发布于 2017-04-24 12:30:54

驱动程序类应该从RenderingModel类继承。

代码语言:javascript
复制
public class Driver:  Sitecore.Mvc.Presentation.RenderingModel { .. }
票数 0
EN

Stack Overflow用户

发布于 2017-05-18 10:54:25

我认为Rvan是对的。该错误导致您创建视图呈现,而不是控制器呈现。记住,在命名约定中,您不需要在控制器名称之后使用controller关键字。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32606286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档