Post on 15-May-2015
ASP.NET MVC
Templated Razor Delegates
Jason
Templated Razor Delegates
Index.cshtml
@{ Func<dynamic, object> strongTag = @<strong>@item</strong>; }
<span>This sentence is @strongTag("Jason").</span>
@Helper Syntax
Index.cshtml
@helper Create(string name, int age) { <p> <span>@name</span> <span>@age</span> </p> }
@Create("Jason", 18)
@Helper Syntax
Person.cshtml in App_Code Folder
@helper Create(string name, int age) { <p> <span>@name</span> <span>@age</span> </p> }
Index.cshmtl
@Person.Create("Jason", 18)
HelperResult Class
Index.cshtml
@{ var items = new[] { "one", "two", "three" }; } <ul>
@items.List(@<li>@item</li>) <ul>
HelperResult Class
RazorExtensions.cs
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); }});
}
Reference
Templated Razor Delegates http://haacked.com/archive/2011/02/27/templated-razor-
delegates.aspx
Helper syntax within Razor http://weblogs.asp.net/scottgu/archive/2011/05/12/asp-net-mvc-
3-and-the-helper-syntax-within-razor.aspx
MSDN-HelperResult http://msdn.microsoft.com/zh-tw/library/
system.web.webpages.helperresult(v=vs.111).aspx