【问题标题】:sitecore mvc return view with viewmoldel带有 viewmodelel 的 sitecore mvc 返回视图
【发布时间】:2014-11-25 05:44:33
【问题描述】:

我正在使用 Sitecore 开发一个 MVC 网站。在一个特定的控制器中,我返回一个带有ViewModel 的(部分)视图,但是该页面只显示了我返回的普通(部分)视图。所以根本没有造型。这听起来很对,但对我来说,问题是我希望整个页面包含通过 Sitecore 在演示详细信息上配置的所有其他部分视图。

我试图避免使用ViewBags,因为ViewModel 在那里,我认为使用ViewModel 看起来更好。

我的代码很简单:

控制器返回如下视图:

return PartialView("NameOfTheView", viewModel);

在页面中我只是解析ViewModel 项目,没什么特别的。

我在 Sitecore 中使用占位符。这是应该显示视图的地方。难道是占位符在这里有问题?

希望我的问题很清楚,有人清楚地知道答案;-)

【问题讨论】:

  • 你如何称呼你的控制器动作?

标签: c# asp.net-mvc sitecore placeholder asp.net-mvc-viewmodel


【解决方案1】:

感谢大家的帮助!

在检查了你的所有建议后,我在一个“相关”问题 (Sitecore MVC form postback does not return a full layout) 中找到了我的答案,他的问题准确地描述了我的问题,只是用更少的词和更好的描述......

就我而言,我的错误是使用@Html.Sitecore().FormHandler("Controller", "Action") 而不是@Html.Sitecore().FormHandler(),这解决了问题。

【讨论】:

  • 对为什么会这样的任何见解?我的做法也和你一样
【解决方案2】:

我将首先验证您使用的是“控制器渲染”并且它已插入到您期望的占位符中。这可以使用“演示详细信息”对话框来完成。

接下来,不需要从控制器返回部分视图。 ASP.NET MVC 中的传统局部视图需要调用@RenderBody() 和/或调用@Html.Partial() 的布局。此功能由 Sitecore 的演示模型(使用占位符)处理。相反,只需从控制器返回一个 View("/path/to/view.cshtml", viewModel) 就可以了。

【讨论】:

    【解决方案3】:

    你的控制器是否被某些@Html.ActionLink(...)返回?

    如果是,那么一切都是正确的。为避免此问题,您可以尝试使用 @Ajax.ActionLink(...)

    【讨论】:

      【解决方案4】:

      如果视图呈现时没有任何样式,这通常是因为 Sitecore 无法为请求的视图解析项目。

      确保您正在通过定义的路由访问控制器操作,并且该路由的 scItemPath 属性设置为包含您的布局详细信息的站点核心项。

      【讨论】:

        猜你喜欢
        • 2011-02-19
        • 1970-01-01
        • 1970-01-01
        • 2017-01-16
        • 2017-06-03
        • 1970-01-01
        • 1970-01-01
        • 2017-02-15
        • 1970-01-01
        相关资源
        最近更新 更多