概念请参考:http://www.cnblogs.com/jingtao/archive/2010/08/18/1802454.html

简单来说就是Razor实现的一个模板引擎,根据自己业务传入数据参数并生成数据。模板引擎的最大作用就是显示与业务分离,代码重用更容易提高开发效率。

先看一段代码

@{
    Func<LogOnModel, object> display = @<p>
                                            <p>UserName: @item.UserName</p>
                                            <p>Password:@item.Password</p>
                                        </p>;
}
@display(Model)

这里构建了一个委托。传入参数是LogOnModel.等号右边则是一个模板。好处是这个模板支持智能提示。

 

模板当作参数

当有新的业务当我们要改变显示方式,上面的代码就不能使用了。再改造一下把模板当作参数传入

@functions {   

    public static HelperResult Generate<T>(T o, Func<T, HelperResult> template)
    {

        return new HelperResult(writer => writer.Write(template(o)));  

      }   

}   

@Generate(Model,
          @
<p> <p>UserName: @item.UserName</p> <p>Password:@item.Password</p> </p>

 
)

Generate方法第二个参数模板做为参数传入,实参的类型是Func<T, HelperResult>, T代表模板接受的数据。

 

一个更有趣的扩展:

http://haacked.com/archive/2011/04/14/a-better-razor-foreach-loop.aspx

相关文章:

  • 2021-08-16
  • 2021-06-26
  • 2022-01-09
  • 2021-08-07
  • 2022-12-23
  • 2022-12-23
  • 2021-06-03
猜你喜欢
  • 2022-12-23
  • 2022-02-22
  • 2021-10-27
  • 2022-03-04
  • 2021-06-19
  • 2021-12-17
  • 2021-10-09
相关资源
相似解决方案