2012-02-08 33 views
1

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

请赐教。谢谢。

回答

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

+0

正当我想我开始了解函数式编程:)我会研究这个,直到我得到它,但现在我需要知道我将如何通过@

文本显示

到部分视图,以便我可以在Partial中调用@ Html.Tmpl。再次感谢。 – Bobbler 2012-02-08 23:02:21

+1

对于任何感兴趣的人,我以前评论的答案是使Partial模型成为HelperResult并使用@Html.Partial(“_ ThePartial”,Html.Tmpl(@

文本显示

) – Bobbler 2012-02-09 00:53:41