GlassMapper数据源和当前项

时间:2016-03-22 17:14:17

标签: sitecore sitecore8 glass-mapper

我正在使用来自glass mapper的GetDataSourceItem方法将我的数据源项返回到视图,我在数据源为空时调试代码,控制器中的calloutModel将为null,但是从视图中,模型将不为null,它将拥有当前项目模型我正在使用以下代码:

我的控制器操作:

 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)

1 个答案:

答案 0 :(得分:4)

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

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