为什么Glass Mapper返回空值?

Sak*_*vel 4 sitecore sitecore-mvc glass-mapper

我正在使用Glass V4.我有一个MVC Web Area Project的设置.

我在主项目(WebProject)中安装了Glass Mapper.

我正在尝试在我的区域项目中进行玻璃铸造.

 public class ContactController : SitecoreController
{
    private readonly ISitecoreContext _context;
    private IGlassHtml _glassHtml;

    public ContactController()
        : this(new SitecoreContext())
    {

    }
    public ContactController(ISitecoreContext context)
    {
        _context = context;
        _glassHtml = new GlassHtml(context);

    }

    // GET: Contact
    public ActionResult ContactUs()
    {
        var db = Sitecore.Context.Database;
        var datasource = db.GetItem(RenderingContext.Current.Rendering.DataSource);

        var ViewModel = new Models.ContactUs();
        ViewModel.Headerstring = datasource.Fields["Headerstring"].Value;
        ViewModel.Substring = datasource.Fields["Substring"].Value;
        ViewModel.Description = ((MultilistField)datasource.Fields["Description"]).GetItems().Select(s => s.Fields["Line"].Value).ToList<string>();

        return View(ViewModel);
    }

    public ActionResult ContactUsGlass()
    {
        var model = _context.GetCurrentItem<ContactUsGlassModel>();
        return View(model);
    }
}
Run Code Online (Sandbox Code Playgroud)

我能够使用第一个操作方法获取值,但不能使用第二个操作方法获取值.

模型:

public class ContactUs
{
    public string Headerstring { get; set; }
    public string Substring { get; set; }
    public List<string> Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

玻璃型号:

public class ContactUsGlassModel
{
    public virtual string Headerstring { get; set; }
    public virtual string Substring { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我知道我不需要在Glass V4中注册我的命名空间.

Mar*_*lak 5

你不应该使用_context.GetCurrentItem方法._context.GetItem改为使用:

public ActionResult ContactUsGlass()
{
    var model = context.GetItem<ContactUsGlassModel>(RenderingContext.Current.Rendering.DataSource);
    return View(model);
}
Run Code Online (Sandbox Code Playgroud)

您不希望从您的模型中获取模型Sitecore.Context.Item(在GetCurrentItem方法中使用.您希望从当前渲染的DataSource获取模型.