MvcContrib开源控件的表格显示
ASP.NET MVC里显示表格不像WebForm里那般容易。我归纳有以下三种方式:1JQERY+插件的方式。2、在页面通过 Foreach循环的方式做显示。3、使用开源控件,比如MvcContrib。MvcContrib是一个很出名的控件,功能上夜是足够的强大,包括对AOP的支持等。下面仅简单说说MvcContrib的初次使用体会。MvcContrib可以在CodePlex上下载。
网上也有一些大侠对MvcContrib的使用做个一些介绍,但是可能由于版本的问题,现在关于它的使用按照大鸟们得说法又不太一样。所以我将自己的使用经历记录下来,以供有需要的朋友们了解了解。当然,我也毕竟刚开始用,有很多都还不知道,希望大家有机会相互借鉴一下。
首先说说我使用的MvcContrib的版本2.0.96.0。
熟悉WebForm模式或者MVC模式的朋友一定知道System.Web配置节下有个Pages节点。这个节点就是对工程下所有页面做做的一些配置,包括明明空间等。首先是在Web.Config文件中做配置。需要引入的命名空间有如下几个:
1 2 3 4 | <add namespace = "MvcContrib.UI" /> <add namespace = "MvcContrib.UI.Html" /> <add namespace = "MvcContrib" /> <add namespace = "MvcContrib.UI.Grid" /> |
在页面上就可以通过<%Html.Grid%>使用了。Grid是个泛型方法,需要制定泛型类型,以使用此类型来做表格显示。然后就可以直接给出数据源,然后进行输出了。如:<% Html.Grid<Demo.Models.Student>(ViewData.Model).AutoGenerateColumns<Demo.Models.Student() %>。通过AutoGenerateColumns泛型方法就可以进行输出。不过他输出的是从Controller返回的整个数据表。
当然,让Controller层返回的数据有选择行的输出也是可行的。具体方式如下:
1 2 3 4 5 6 7 8 9 | <% Html.Grid<Demo.Models.Student>(ViewData.Model).Columns( cols=> { cols.For(s=>s.Name); cols.For(s=>s.Address, "地址" ); } ); %> |
通过上面的Lambda表示式,就可以输出制定的数据列了。当然也可以对列做一些样式设置。如:
1 2 3 4 5 6 7 8 9 10 11 12 | <% Html.Grid<Demo.Models.Student>(ViewData.Model).Columns( cols=> { cols.For(s=>s.Name).Attributes( new Hash(@ class => "grid" ).Add< int >( "cellpadding" , 2).Add< int > ( "cellspacing" , 0)); cols.For(s=>s.Address, "地址" ).DoNotEncode(); } ) .Empty( "没有数据" ) .HeaderRowAttributes( new Hash(Style=> "text-align:center;font:bold 13px/20px Verdana;" )); %> |
Attributes是对列做样式,DoNotEncode是对列显示做的HTML编码,Empty指明没有数
据时显示的信息、<br>HeaderRowAttributes设置表头的样式。
以前版本中用法和现在稍有差别:之前版本中,Columns是作为Grid泛型方法的第二个参数使
用的。在这个版本中,Gird泛型方</strong><br><strong>法只有一个参数,但是有参数有两种
类型,1:ViewData中Key的名字的字符串。2、IEnumerable<>类型的数据
源
MvcContrib的用法还不止这些。他还包括对Form表单做一
些验证设置、做Route,还有就是扩展Controller的功能。总之,它<br>是一个很强大的开源控件。以后有些体会再做介绍。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?