我正在使用玻璃映射器的 GetDataSourceItem 方法将我的数据源项返回到 View ,当数据源为空时调试代码, Controller 中的 calloutModel 将为空,但从 View 中,模型不会为空,它将具有当前项目模型我使用以下代码:

我的 Controller Action :

 public ActionResult Callout()
        {
            // I didn't fill the datasource in the component
            // calloutModel value is coming null.

            var calloutModel= GetDataSourceItem<CalloutModel>();
            return View(calloutModel);
        }

我的观点 :
 @inherits Glass.Mapper.Sc.Web.Mvc.GlassView<CalloutModel>
 // Model is coming the current item in the view (it should be null)

最佳答案

看起来这是由于 GlassView 基类。如果模型为空,该类将覆盖 InitHelpers 方法并调用其 GetModel 方法。如果没有数据源项,GetModel 方法将回退到上下文项。

为了防止这种情况,您可以将@inherits 指令更改为@model CalloutModel,然后使用@Html.Glass() 助手来访问可编辑方法等。

关于sitecore - Glass Mapper 数据源和当前项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36160984/

10-10 04:44