网页设计基础知识总结如何优化网站推广
news/
2025/9/25 20:18:13/
文章来源:
网页设计基础知识总结,如何优化网站推广,渝东建设工程造价信息网,seo优化方式原文地址#xff1a;http://www.cnblogs.com/yinzixin/archive/2012/11/30/entity-framework-dynamic-query.html Dynamic Query是一个支持动态Entity Framework查询的库。它的设计初衷是为了减少在管理系统中大量出现的对一个数据集进行查找、排序、分页的这类场景的开发工作…原文地址http://www.cnblogs.com/yinzixin/archive/2012/11/30/entity-framework-dynamic-query.html Dynamic Query是一个支持动态Entity Framework查询的库。它的设计初衷是为了减少在管理系统中大量出现的对一个数据集进行查找、排序、分页的这类场景的开发工作量其设计思想是”markup is code ”。通过在View上编写具有语义信息的标签来实现这类常见的功能需求而不再需要额外的代码。它不是一个完整的ORM是基于Entity Framework的因此开发者仍然可以利用Entity Framework提供的大量特性和现有的EF项目保持兼容。 Dynamic Query分为两个部分其中之一是一个查询接口这是一个IQueryableT的扩展方法: public static IQueryableT QueryT(this IQueryableT data, QueryDescriptor descriptor) 其中QueryDescriptor是一个简单的类包含了一个查询的必要信息例如筛选条件排序信息分页信息等。 例如: QueryDescriptor descriptor new QueryDescriptor{OrderBy new OrderByClause { Key Price, Order OrderSequence.ASC },PageSize 3,PageIndex 1,Conditionsnew QueryCondition[] {new QueryCondition { Key Name,Value Rice, Operator QueryOperator.CONTAINS }}};int pageCount;var resctx.Products.Query(descriptor, out pageCount); 这相当于执行了查询: select * from Product where [Name] like N%Rice% order by Price asc 并且对结果进行分页每页3条数据返回第一页。注意这里返回的结果是IQueryableT这实际上是一个Entity Framework的查询在没有序列化之前并没有对数据库进行操作分页也是发生在服务器端的这对于大数据来说能够极大的减少网络传输和内存使用量。 当然手动构造这样一个QueryDescriptor也是一件非常无趣的事情为此Dynamic Query还为asp.net MVC 实现了一系列的helper方法和一个model binder来自动生成QueryDescriptor。我们最终的目标是获得页面提交的数据自动生成QueryDescriptor对象。为此需要注册一下一个自定义的binder只需要在Global.asax的Application_Start中添加一行代码: ModelBinders.Binders.Add(typeof(QueryDescriptor), new QueryDescriptorBinder()); 假如我们有如下的EF模型 我们来实现一个列表对Product的Name进行筛选。这时候可以使用QueryTextbox扩展方法来生成查询字段View的代码如下 div classcontainer form class.form-searchHtml.QueryTextbox(Name, Product Name, QueryOperator.CONTAINS)
input typesubmit valueSearch classbtn//form
/div
div classrowdiv classspan12 offset2 table classtable table-stripedtheadtrtdID/tdtdCategory/tdtdName/tdtdPrice/tdtdDescription/td/tr/theadtbodyforeach (var p in Model){trtdp.Id/tdtdp.Category.Name/tdtdp.Name/tdtdp.Price/tdtdp.Description/td/tr}/tbody/table/div
/div 上半部分是一个form里面有一个QueryTextBox下半部分就是一个列表非常简单。看对应的Action public ActionResult Index(QueryDescriptor descriptor){ShopContainer ctx new ShopContainer();var result ctx.Products.Query(descriptor);return View(Product,result);} 由于Model Binder的存在Action会从页面获得QueryDescriptor的信息。这样一个筛选页面就做好了。如果客户说我还要增加对种类名称和价格范围的筛选那需要改什么地方只需要在View的form中添加几个QueryTextbox就可以了。 form class.form-searchHtml.QueryTextbox(Name, Product Name, QueryOperator.CONTAINS)Html.QueryTextbox(Category.Name, Product Category, QueryOperator.CONTAINS)Html.QueryTextbox(Price.1, Price Between, QueryOperator.GREATEROREQUAL,decimal)Html.QueryTextbox(Price.2, , QueryOperator.LESSOREQUAL,decimal)input typesubmit valueSearch classbtn//form 注意Price出现了两次需要加上数字后缀区分一下就可以如果不是string类型加上类型的说明这样就OK。Action方法是不需要有任何改动的。 如果客户说这个要分页怎么办 分页需要稍微多些两行代码但是也只需要2分钟就足够先看Action方法: public ActionResult Product(QueryDescriptor descriptor){descriptor.PageSize 5;descriptor.OrderBy new OrderByClause { Key Id, Order OrderSequence.ASC };ShopContainer ctx new ShopContainer();int pageCount;var result ctx.Products.Query(descriptor, out pageCount);Pager pager new Pager(pageCount, descriptor);ViewBag.Pager pager;return View(Index,result);} 首先指定一页显示的数量因为要分页必须要有排序信息这里是根据Id升序排列。接下来还是调用Query方法获得数据注意这里是Query的一个重载的方法能够返回总共有多少页这一般是分页控件需要的信息。接下来实例化一个Pager对象这个Pager是一个分页器包含在Dynamic Query中如果你想用其他第三方的分页器也是可以的。Pager需要的额外信息就是总页数把这个Pager放到ViewBag上面然后Action的工作就完成了。View上面也不想要任何改变如果你想加上分页链接的话只需要一行代码: Html.QueryPager((Pager)ViewBag.Pager); 看看效果 项目主页和源代码在http://dynamicquery.codeplex.com/ 上面有一个样例程序更多文档在完善中。 这个项目才开始没多久还有很多细节需要完善主要是样式、支持更多的控件比如checkboxdropdownlist等。以后慢慢补充。转载于:https://www.cnblogs.com/fcsh820/archive/2012/12/06/2804595.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/917468.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!