GlassMapper数据源和当前项目

Aym*_*oum 3 sitecore glass-mapper sitecore8

我正在使用玻璃映射器中的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);
        }
Run Code Online (Sandbox Code Playgroud)

我的看法

 @inherits Glass.Mapper.Sc.Web.Mvc.GlassView<CalloutModel>
 // Model is coming the current item in the view (it should be null)
Run Code Online (Sandbox Code Playgroud)

Ben*_*den 5

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

为避免这种情况,可以将@inherits指令更改为@model CalloutModel,然后使用@ Html.Glass()帮助器来访问Editable方法等。