MVC Razor语法:@后跟HTML

时间:2012-02-08 22:31:07

标签: html asp.net-mvc razor

我今天遇到了这个代码,并不是真的理解它。请有人能告诉我这意味着什么以及如何解释它?我简化了它,但它基本上是@符号后跟一些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 ) );
}

请赐教。谢谢。

1 个答案:

答案 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