愤怒的大鸟 发表于 2015-1-16 14:26:42

NET网页编程之详解ASP.NET MVC数据分页

效率会有不少的变化。而实际上java是基于堆栈机器来设计,这和我们常见的基于寄存器的本地机器是差异比较大的。总体来说,这是一种虚拟机的设计思路。ASP.NETMVC框架已进进2.0时期,本文将从ASP.NETMVC数据分页谈起,但愿能对人人有所匡助。在网页长进行表格材料或其他显现材料的分页是一种非常罕见的需求,之前我们有GridView或DataPager能够帮我们主动分页,固然到了ASP.NETMVC统统全体重头来过,但我们也不必真的那麽辛劳的本人实做分页,由于早就有人帮我们写好程式并开放原始码分享给这个天下了。
假如你已体味到在ASP.NETMVC中妥帖使用强型别(StrongTyped)特征举行开辟的长处时,你将会发明搭配VisualStudio2008举行专桉开辟的历程有多美好。以下我先举一个复杂的例子:
你能够在Controller中界说一个Action办法,并在裡面先获得一切需显现在View中的材料,假如你用LINQtoSQL的话,能够间接传进IQueryable型其余物件到View中,当做View裡面利用的Model,如许能够享用提早载进(DeferedLoading)的效果。
publicActionResultIndex()
{
IQueryable<Customer>custs=
fromcustindb.Customers
wherecust.City=="Taiwan"
selectcust;

returnView(custs);
}
publicActionResultIndex()
{
IQueryable<Customer>custs=
fromcustindb.Customers
wherecust.City=="Taiwan"
selectcust;

returnView(custs);
}
以后在你的View中宣布承继时可透过泛型指派IQueryable出来:
<%@PageLanguage="C#"Inherits="System.Web.Mvc.ViewPage<IQueryable<Customer>>"%>
<%@PageLanguage="C#"Inherits="System.Web.Mvc.ViewPage<IQueryable<Customer>>"%>
或是转型成一致个IEnumable,这也是对照罕见的用法:
<%@PageLanguage="C#"Inherits="System.Web.Mvc.ViewPage<IEnumable<Customer>>"%>
<%@PageLanguage="C#"Inherits="System.Web.Mvc.ViewPage<IEnumable<Customer>>"%>
然后你就能够使用foreach掏出一切材料并将材料显现出来了:
<table>
<%foreach(variteminModel){%>
<tr>
<td><%=Html.Encode(item.ID)%></td>
<td><%=Html.Encode(item.Name)%></td>
<td><%=Html.Encode(item.Tel)%></td>
</tr>
<%}%>
</table>
<table>
<%foreach(variteminModel){%>
<tr>
<td><%=Html.Encode(item.ID)%></td>
<td><%=Html.Encode(item.Name)%></td>
<td><%=Html.Encode(item.Tel)%></td>
</tr>
<%}%>
</table>
这就是尺度的ASP.NETMVC获得材料并显现在View中的Pattern。
我们比来在开辟ASP.NETMVC专桉的过程当中,除自行研讨怎样无效分页之外,也上彀找了好几套ASP.NETMVC分页的办理方桉,最初我们总结出一个最好用的就是这个元件(PagingwithASP.NETMVC)。
要使用这个元件举行材料分页,不过乎有几件事必需做到:
需传进一个page参数到Action中,用以指定你今朝要显现「第几页」的材料。
筹办传进的材料(Model),可透过PagingwithASP.NETMVC元件中供应的ExtensionMethod将IList,IQueryable,或IEnumable型其余材料转换成IPagedList的型别,并传进View中。
透过一个自订的HtmlHelper在View中必需显现「分页导览列」的资讯(以下图)

根据下面三个步骤举行修正,Action的程式码会酿成如许:
viewplaincopytoclipboardprint?
//分页后每页显现的笔数
intdefaultPageSize=10;

//传进page参数(透过ModelBinder绑出去的)
publicActionResultIndex(int?page)
{
IQueryable<Customer>custs=
fromcustindb.Customers
wherecust.City=="Taiwan"
selectcust;

//盘算出今朝要显现第几页的材料(由于page为Nullable<int>型别)
intcurrentPageIndex=page.HasValue?page.Value-1:0;

//透过ToPagedList这个ExtensionMethod将底本的材料转成IPagedList<T>
returnView(custs.ToPagedList(currentPageIndex,defaultPageSize));
}
//分页后每页显现的笔数
intdefaultPageSize=10;

//传进page参数(透过ModelBinder绑出去的)
publicActionResultIndex(int?page)
{
IQueryable<Customer>custs=
fromcustindb.Customers
wherecust.City=="Taiwan"
selectcust;

//盘算出今朝要显现第几页的材料(由于page为Nullable<int>型别)
intcurrentPageIndex=page.HasValue?page.Value-1:0;

//透过ToPagedList这个ExtensionMethod将底本的材料转成IPagedList<T>
returnView(custs.ToPagedList(currentPageIndex,defaultPageSize));
}
然后在View中显现材料的中央,透过一个自订的HtmlHelper办法显现分页资讯。
起首必需先修正传进View的Model型别
<%@PageLanguage="C#"Inherits="System.Web.Mvc.ViewPage<IPagedList<Customer>>"%>
<%@PageLanguage="C#"Inherits="System.Web.Mvc.ViewPage<IPagedList<Customer>>"%>
然后再宣布汇进MvcPaging定名空间,好让Html.Pager这个HtmlHelperMethod可使用:
备注:也能够在web.config设定,请参考ASP.NET怎样预设汇进指定的定名空间(Namespace)文章!
<%@ImportNamespace="MvcPaging"%>
<%@ImportNamespace="MvcPaging"%>
然后底本显现材料的程式「完整不必改写」,只需加上「分页导览列」便可:
viewplaincopytoclipboardprint?
<table>
<%foreach(variteminModel){%>
<tr>
<td><%=Html.Encode(item.ID)%></td>
<td><%=Html.Encode(item.Name)%></td>
<td><%=Html.Encode(item.Tel)%></td>
</tr>
<%}%>
</table>

<divclass="pager">
<%=Html.Pager(Model.PageSize,Model.PageNumber,Model.TotalItemCount)%>
</div>
<table>
<%foreach(variteminModel){%>
<tr>
<td><%=Html.Encode(item.ID)%></td>
<td><%=Html.Encode(item.Name)%></td>
<td><%=Html.Encode(item.Tel)%></td>
</tr>
<%}%>
</table>

<divclass="pager">
<%=Html.Pager(Model.PageSize,Model.PageNumber,Model.TotalItemCount)%>
</div>
就如许复杂几个步骤便可完成ASP.NETMVC内的分页了,是否是还不错用呢!
因为各系统的API不同,代码调用API编写程序就会遇到很多不兼容的地方,比如Java改写后的Serv-U就不能在手机上执行,手机的游戏也不能直接在微机上执行。

admin 发表于 2015-1-18 14:39:32

它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。

爱飞 发表于 2015-1-27 05:07:31

现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。

若相依 发表于 2015-2-5 03:57:10

ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。

活着的死人 发表于 2015-2-11 04:40:28

现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。

分手快乐 发表于 2015-3-1 21:56:34

提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。

小妖女 发表于 2015-3-11 00:54:07

代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。

简单生活 发表于 2015-3-17 17:12:45

那么,ASP.Net有哪些改进呢?

精灵巫婆 发表于 2015-3-24 19:02:43

能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。
页: [1]
查看完整版本: NET网页编程之详解ASP.NET MVC数据分页