您好我正在使用Sitecore 8.1更新1与MVC5.2.3和Glass Mapper。我在Glass Mapper链接字段中遇到了一些问题。我创建了一个模板,该模板源自标准渲染参数模板,其中我使用了Sitecore General Link
字段。我也为此创建了模型:
我的模特:
[SitecoreType(TemplateId = "{912B074D-F8BA-4AA7-9276-016515A1ACE8}")]
public class RelatedArticleParams
{
[SitecoreId]
public virtual Guid Id { get; set; }
public virtual string HeaderText { get; set; }
[SitecoreField(FieldType = SitecoreFieldType.GeneralLink)]
public Link Link { get; set; }
}
我的观点:
@{
var parameters = GetRenderingParameters<RelatedArticleParams>();
}
<a href="@parameters.Link.Url" class="linkdark">@parameters.Text</a>
如果我在Sitecore后端添加演示文稿详细信息中的链接,那么一切都很好。但是,当我在Sitecore页面体验编辑器中单击此组件并插入到渲染参数的链接时,它将在页面顶部显示错误发生的红线指示。我无法从页面编辑器模式插入链接。
请帮我解决这个问题,无论是Glass Mapper bug还是我犯了错误?
感谢。 非常感谢您的建议。
答案 0 :(得分:4)
另一种选择是在代码中完成。
public class MyViewModel
{
public HtmlString MyLink { get; set; }
}
public class MyController : Controller
{
private readonly IGlassHtml _glassHtmlHelper;
public void MyController()
{
_glassHtmlHelper = new GlassHtml(new SitecoreContext());
}
public ViewResult MyControllerAction()
{
var viewModel = new MyViewModel();
//Get your item
viewModel.MyLink = new HtmlString(_glassHtmlHelper.RenderLink<RelatedArticleParams>(contentItem, x => x.Link, isEditable: true));
return View(viewModel);
}
}
然后,在你的标记中,你所要做的就是:
@model MyViewModel
<div>
@Model.MyLink
</div>
答案 1 :(得分:2)
你应该使用
@Editable(glass mapper的属性名称)//使用Model属性。
答案 2 :(得分:2)
使用
@RenderLink(x =&gt; x.Link)
或
@using (BeginRenderLink(x => x.GeneralLink, isEditable: true))
{
@RenderImage(x => x.Image)
}