それを回避するための拡張メソッドを作成しました。ビューに使用されているものとは異なるモデル タイプを渡したい場合があるためではなく、
拡張したことに注意してください。GlassHtml
GlassView
namespace ParTech.MvcDemo.Context.Extensions
{
using System;
using System.Linq.Expressions;
using System.Web;
using Glass.Mapper.Sc;
using Glass.Mapper.Sc.Fields;
public static class GlassHtmlExtensions
{
public static HtmlString RenderLinkWithDefaultText<T>(this GlassHtml glassHtml, T model, Expression<Func<T, object>> field, object attributes = null, bool isEditable = true, string defaultText = null)
{
var linkField = field.Compile().Invoke(model) as Link;
if (linkField == null || string.IsNullOrEmpty(linkField.Text))
{
return new HtmlString(glassHtml.RenderLink(model, field, attributes, isEditable, defaultText));
}
return new HtmlString(glassHtml.RenderLink(model, field, attributes, isEditable));
}
}
}
ビューでこれを実行できるようになりました。
@(((GlassHtml)this.GlassHtml).RenderLinkWithDefaultText(MyModel, x => x.LinkField, null, true, "Static default text"))
IGlassHtml
toをキャストする必要があるため、まだ少しハックですGlassHtml
が、機能します。ビューに対して常に正しいモデルが定義されている場合 (したがって、モデル
パラメーター
を指定する必要がない場合)、この拡張メソッドを に配置できます。GlassView