Sitecore 玻璃贴图器渲染链接说明-默认文本(如果为空) @if(string.IsNullOrWhiteSpace(topLinks.Target.Text)) { topLinks.Target.Text=“空描述”; } @(RenderLink(topLinks,x=>x.Target,可编辑:true))

Sitecore 玻璃贴图器渲染链接说明-默认文本(如果为空) @if(string.IsNullOrWhiteSpace(topLinks.Target.Text)) { topLinks.Target.Text=“空描述”; } @(RenderLink(topLinks,x=>x.Target,可编辑:true)),sitecore,glass-mapper,Sitecore,Glass Mapper,我需要一种方法,当内容编辑器设置了一个链接,但实际上没有将链接描述放进去时,捕获它。目前,它只是渲染空间。上面的方法很有效,但它很笨重,我需要把它放在我使用RenderLink的任何地方。如果文本为空,如何设置默认值?我已经创建了一个扩展方法来解决它。 请注意,我扩展了GlassHtml而不是GlassView,因为您可能希望传递一个不同于用于视图的模型类型 namespace ParTech.MvcDemo.Context.Extensions { 使用制度; 使用System.Linq.Ex

我需要一种方法,当内容编辑器设置了一个链接,但实际上没有将链接描述放进去时,捕获它。目前,它只是渲染空间。上面的方法很有效,但它很笨重,我需要把它放在我使用
RenderLink
的任何地方。如果文本为空,如何设置默认值?

我已经创建了一个扩展方法来解决它。
请注意,我扩展了
GlassHtml
而不是
GlassView
,因为您可能希望传递一个不同于用于视图的模型类型

namespace ParTech.MvcDemo.Context.Extensions
{
使用制度;
使用System.Linq.Expressions;
使用System.Web;
使用Glass.Mapper.Sc;
使用Glass.Mapper.Sc.字段;
公共静态类glass
{
公共静态HtmlString RenderLink WithDefaultText(此GlassHtml GlassHtml,T模型,表达式字段,对象属性=null,布尔isEditable=true,字符串defaultText=null)
{
var linkField=field.Compile().Invoke(model)作为链接;
if(linkField==null | | string.IsNullOrEmpty(linkField.Text))
{
返回新的HtmlString(glassHtml.RenderLink(model,field,attributes,isEditable,defaultText));
}
返回新的HtmlString(glassHtml.RenderLink(model,field,attributes,isEditable));
}
}
}
现在,您可以在视图中执行此操作:

@(((GlassHtml)this.GlassHtml).RenderLinkWithDefaultText(MyModel,x=>x.LinkField,null,true,“静态默认文本”))
还是有点不太好,因为您需要将
IGlassHtml
转换为
GlassHtml
,但它可以工作。

如果您始终为视图定义了正确的模型(因此不需要指定模型参数),您可以将此扩展方法放在
GlassView

上。我创建了一个扩展方法来解决此问题。
请注意,我扩展了
GlassHtml
而不是
GlassView
,因为您可能希望传递一个不同于用于视图的模型类型

namespace ParTech.MvcDemo.Context.Extensions
{
使用制度;
使用System.Linq.Expressions;
使用System.Web;
使用Glass.Mapper.Sc;
使用Glass.Mapper.Sc.字段;
公共静态类glass
{
公共静态HtmlString RenderLink WithDefaultText(此GlassHtml GlassHtml,T模型,表达式字段,对象属性=null,布尔isEditable=true,字符串defaultText=null)
{
var linkField=field.Compile().Invoke(model)作为链接;
if(linkField==null | | string.IsNullOrEmpty(linkField.Text))
{
返回新的HtmlString(glassHtml.RenderLink(model,field,attributes,isEditable,defaultText));
}
返回新的HtmlString(glassHtml.RenderLink(model,field,attributes,isEditable));
}
}
}
现在,您可以在视图中执行此操作:

@(((GlassHtml)this.GlassHtml).RenderLinkWithDefaultText(MyModel,x=>x.LinkField,null,true,“静态默认文本”))
还是有点不太好,因为您需要将
IGlassHtml
转换为
GlassHtml
,但它可以工作。

如果您始终为视图定义了正确的模型(因此不需要指定模型参数),您可以将此扩展方法放在
GlassView

尼斯扩展上,如果可以的话,我可能会将其添加到玻璃的核心。你也可以把这个GlassHtml玻璃改成这个IGlassHtml,它应该仍然可以工作。请随意添加它matenice扩展,如果可以的话,我可以将它添加到玻璃的核心。你也可以将这个GlassHtml玻璃更改为这个IGlassHtml,它应该仍然可以工作