2012-02-08 67 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