我今天遇到了这个代码,并不是真的理解它。请有人能告诉我这意味着什么以及如何解释它?我简化了它,但它基本上是@符号后跟一些HTML。
电话是:
@Html.Tmpl(@<p>text to display</p>)
功能是:
public static HelperResult Tmpl<TModel>( this HtmlHelper<TModel> html, Func<HtmlHelper<TModel>, HelperResult> template )
{
return new HelperResult( writer => template( html ).WriteTo( writer ) );
}
请赐教。谢谢。
答案 0 :(得分:2)
这是所谓的模板化剃刀代表的一个例子。很简单,它是一种HTML帮助程序,它接受一块Razor模板代码,可用于组成复杂操作的结果。
一个简单的用例可能是Html.List(data, template)
方法,它接受每行数据的记录列表和模板。模板标记是一个委托,可以在帮助程序的逻辑中调用并传递模型。
public static HelperResult List<T>(this IEnumerable<T> items,
Func<T, HelperResult> template) {
return new HelperResult(writer => {
foreach (var item in items) {
template(item).WriteTo(writer);
}
});
}
Phil Haacked在此详细介绍:http://haacked.com/archive/2011/02/27/templated-razor-delegates.aspx。