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中注册我的命名空间.
你不应该使用_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获取模型.
归档时间: |
|
查看次数: |
2260 次 |
最近记录: |