asp.net webform相关讨论

问题描述

长期搞c/s架构的企业局域网软件,b/s搞的少,而且在搞webform(木有玩过mvc),也不觉得wpf多好多好,所以讨论围绕webform,请大牛们畅所欲言。1、页面展现列表数据的时候,局部刷新,用的比较多的就是$.ajax调用后台代码或者ashx文件,针对一些数据量较小的列表数据,通常都是用html+css画界面(这种列表展现的数据量较小,不会有翻页、排序的要求)。问题来了,如果数据量较大有翻页、排序的要求,再用html+css去自己画页面并实现排序、分页,这个搞起来感觉有点复杂了。不想用asp:gridview这个玩意,发布的页面会生成一堆垃圾东西,调样式也烦。大牛们都是怎么实现这种列表展现数据的?局部刷新+列表(翻页、排序)2、asp.netwebform做工作流,有木有经验介绍下,工作流这块没接触过。分数不多了,都拿出来,希望大牛们不吝赐教。顺祝端午节安康!

解决方案

解决方案二:
如果经常使用前端框架,那么grid的翻页(或者是下拉时动态瀑布式增加)一点也不麻烦,通常也就是4、5行javascript代码。如果你能把自己常用的模式封装成类型(如果使用typescript会比原生javacript语言更接近于c#),那么就会封装为自己熟悉的“1行代码完成功能”。如果你重点在于前端,那么当你创建aspx的时候,第一件事就是把EnableViewstate属性设置为false,或者是把页面上的默认产生的<formrunat="server>删除掉。这样你的页面就是无回发机制的了。你看几乎所有的关于asp.netmvc的博客,一开始假设以大篇幅来“黑”webform的时候,都是围绕着ViewState来说的。很显然,如果你真的是前端js开发很厉害,那么你就应该彻底关闭asp.net传统的回发机制。asp.net传统的回发机制与ajax机制实际上是相互竞争、相会对立的,无法调和。
解决方案三:
凡是那种5、6行代码或者“1行代码”就为前端grid增加数据行的框架,你可以注意一下,都是数据驱动的。也就是说,当你对数据集合进行更新,例如代码varself=this;jQuery.get("data/index.json",function(d,s,r){vararr=d.data1;for(var_i=0,arr_1=arr;_i<arr_1.length;_i++){varx=arr_1[_i];self.data1.push(x);}arr=d.data2;for(var_a=0,arr_2=arr;_a<arr_2.length;_a++){varx=arr_2[_a];self.data2.push(x);}});

这个代码就是从服务器下载了数据,然后把下载来的两个数据集合中的记录push到本地的数据集合。而前端框架,此时就自动更新UI了,例如自动为2个grid表格增加了许多新记录。如果你的脑子里还是“用js代码来操作dom”,那么你比较out了。这就会写出很垃圾的前端代码。js代码和dom/html代码,应该分开成为两层。而不应该纠结在一起。
解决方案四:
不管做什么企业应用,业务逻辑的重点都在于后台、在于内功。通常设计好的业务服务层开放个几十家前端开发商去使用,当没人买你的“工作流系统服务”的时候,你们才应该自己先做一套工作流系统前端出来。这是架构一个大的企业系统的基础思路。所以如果你只是会一点页面编程,你所谓的“工作流系统”一般来说也就是随便说说,深入不下去。只有那些有魄力、能够把前端“包出去”的人,才能设计好一个后台系统框架。我不是说真的要把前端开发给包出去,我是说要有这种能力,要把前端跟后端分得很清。从2015年以来,国内出现了一帮很垃圾的“全栈工程师”,其实就是一些做网页的,号称自己是全栈工程师。其实他们也还是做小网站,烧一些无脑的投资人的钱。而真正的全栈工程师,必须有非常丰富的服务器设计开发经验!然后再加上前端技术。
解决方案五:
数据量大的解决方法肯定是从分页查询数据开始的,其实对于显示来说,还是一页一页的内容显示出来,查询慢是因为数据库结构不合理或者数据冗余问题比较严重,代码结构不合理等原因引起的。跟前端的显示方式关系不大。你的这个问题是因为C/S的一般结构是把数据全都传到客户端,之后代码来画出界面,全部的东西都要自己在客户端处理。B/S的结构可以是一页一页得获取数据。关于工作流的问题,它只是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。跟实现的方式无关。
解决方案六:
可以看ko官网上的一个入门级的例子。这个例子没有什么美工概念,所以Grid的样式看上去非常普通,主要是演示了ko的理念。你可以看到,代码很少,代码围绕着mvvm中的vm而不是针对v来编写的。(我们不用这个页面这类的入门ko知识,我们使用ko的“template绑定”即使,并且动态下载模板、动态下载数据,无限伸展地应用ko模型。)而你说的“用xxxxx去翻页、排序时感觉有点复杂”这些话,其实编程设计方式完全是极其原始的js程序员的方式。编程设计的理念上的区别,其实要比代码更重要。就好像小说里说的,所谓“九阴真经、葵花宝典”很难找,但是不难练。
解决方案七:
举个例子,当用户点击AddProduct按钮时,你可以看代码,只是执行了一行代码self.addLine=function(){self.lines.push(newCartLine())};

然后你就看到界面上多了一行初始化数据,并且这行都初始化好了(例如准备好了Category下来列表)。其它的mvvm式的操作也是如此,编程都是非常简单。可以随时读取当前用户录入的所有数据、合计等等,而不需要操作dom;反之增加上删除或者排序object.lines属性数组,也会自动更新到UI。这可以解决你的你的根本问题——重学web前端。
解决方案八:
该回复于2016-06-12 12:34:50被版主删除
解决方案九:
引用6楼sp1234的回复:

举个例子,当用户点击AddProduct按钮时,你可以看代码,只是执行了一行代码self.addLine=function(){self.lines.push(newCartLine())};

然后你就看到界面上多了一行初始化数据,并且这行都初始化好了(例如准备好了Category下来列表)。其它的mvvm式的操作也是如此,编程都是非常简单。可以随时读取当前用户录入的所有数据、合计等等,而不需要操作dom;反之增加上删除或者排序object.lines属性数组,也会自动更新到UI。这可以解决你的你的根本问题——重学web前端。

问一个问题:上面的展示出的代码中的self.data1.push(x);是从数据库中查出的原始的数据结构吗?在添加的到自己的data1中的时候,在data1中再拼接html字符串??追加到当前的dom中???
解决方案十:
引用6楼sp1234的回复:

举个例子,当用户点击AddProduct按钮时,你可以看代码,只是执行了一行代码self.addLine=function(){self.lines.push(newCartLine())};

然后你就看到界面上多了一行初始化数据,并且这行都初始化好了(例如准备好了Category下来列表)。其它的mvvm式的操作也是如此,编程都是非常简单。可以随时读取当前用户录入的所有数据、合计等等,而不需要操作dom;反之增加上删除或者排序object.lines属性数组,也会自动更新到UI。这可以解决你的你的根本问题——重学web前端。

还是在后台查询出数据后,就在后台拼接好响应的html字符串??
解决方案十一:
一楼牛人,五连回复.
解决方案十二:
引用4楼fxj805835819的回复:

数据量大的解决方法肯定是从分页查询数据开始的,其实对于显示来说,还是一页一页的内容显示出来,查询慢是因为数据库结构不合理或者数据冗余问题比较严重,代码结构不合理等原因引起的。跟前端的显示方式关系不大。你的这个问题是因为C/S的一般结构是把数据全都传到客户端,之后代码来画出界面,全部的东西都要自己在客户端处理。B/S的结构可以是一页一页得获取数据。关于工作流的问题,它只是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。跟实现的方式无关。

感谢这位兄台的回复!估计您看出帖子了,我提问里面不是探讨大数据量查询慢的问题(丝毫没有这种字眼)
解决方案十三:
估计您看错帖子了,我提问里面不是探讨大数据量查询慢的问题(丝毫没有这种字眼)
解决方案十四:
引用8楼yan_hyz的回复:

Quote: 引用6楼sp1234的回复:
举个例子,当用户点击AddProduct按钮时,你可以看代码,只是执行了一行代码self.addLine=function(){self.lines.push(newCartLine())};

然后你就看到界面上多了一行初始化数据,并且这行都初始化好了(例如准备好了Category下来列表)。其它的mvvm式的操作也是如此,编程都是非常简单。可以随时读取当前用户录入的所有数据、合计等等,而不需要操作dom;反之增加上删除或者排序object.lines属性数组,也会自动更新到UI。这可以解决你的你的根本问题——重学web前端。

问一个问题:上面的展示出的代码中的self.data1.push(x);是从数据库中查出的原始的数据结构吗?在添加的到自己的data1中的时候,在data1中再拼接html字符串??追加到当前的dom中???

+1同问@以专业开发人员为伍
解决方案十五:
看p哥的评论很爽
解决方案:
gv是生成很多垃圾的viewstate.不过easyui生成的"垃圾"似乎大于gv....那么多垃圾就是为了"好看",我觉得不值得."它"的运行效率真的大于gv吗?使用起来真的比"gv"方便快速吗?呵呵.
解决方案:
引用8楼yan_hyz的回复:

Quote: 引用6楼sp1234的回复:
举个例子,当用户点击AddProduct按钮时,你可以看代码,只是执行了一行代码self.addLine=function(){self.lines.push(newCartLine())};

然后你就看到界面上多了一行初始化数据,并且这行都初始化好了(例如准备好了Category下来列表)。其它的mvvm式的操作也是如此,编程都是非常简单。可以随时读取当前用户录入的所有数据、合计等等,而不需要操作dom;反之增加上删除或者排序object.lines属性数组,也会自动更新到UI。这可以解决你的你的根本问题——重学web前端。

问一个问题:上面的展示出的代码中的self.data1.push(x);是从数据库中查出的原始的数据结构吗?在添加的到自己的data1中的时候,在data1中再拼接html字符串??追加到当前的dom中???

为什么一定要是数据库的原始结构?不要纠结于数据库,最简单的用于各个层之间的model,可以是跟数据库表一一对应,这是最简单的,但一般还会有一个model,是UI用的。。。比如说,你的表有班级表,有学生表,学生表中有一个字段是班级ID,表示学生属于哪个班级,那么,我们平时用的model就是两个model,一个班级,一个学生,但我上面说UI用的那个model,可能也是两个,一个是班级model,这个班级model中有一个学生model的数组,表示这个班级的学生。。。
解决方案:
既然你脱离服务器控件,那你可以easyui+ajax+handler。至于你说的分页,都交给easyui就可以了。设置pagination:true。后台接收参数pageNumber,pageSize就可以了。(分页查询,一般就是对数据库分页查询)说白了,如果你注重前台,想摒弃asp.net的回发机制。那么就应该多关注前台的第三方控件,例如jq-ui,easyui等等。
解决方案:
分页、排序啥的都有js控件,其实你可以认为服务器控件搬到了客户端,当然自己html+js其实也没啥的,如果公司有UI组的话,基本你必须要按照UI提供的html原型组织html+js进行展示
解决方案:
1.你还停留在控件的层面2.大数据量的分页,不会傻傻的直接取全表的数据分页3.看看redis之类的缓存
解决方案:
我一般都不用aspx.net的控件,最好是用html原生控件,这样和js、cs可以简单高效的配合,不用生成一堆垃圾css和js
解决方案:
分页有专门的jq插件,前端传入页数,后端直接在库里取数,很方便的
解决方案:
引用19楼Joyhen的回复:

1.你还停留在控件的层面2.大数据量的分页,不会傻傻的直接取全表的数据分页3.看看redis之类的缓存

1、大数据指定不会一下子load到页面,页切换采取重新检索(可以从数据库load或者使用缓存)2、没有停留在控件的层面上,是b/s搞的少,小数据量都是ajax+json画界面(不用easyui或者gridview控件)
解决方案:
引用21楼lshfong的回复:

分页有专门的jq插件,前端传入页数,后端直接在库里取数,很方便的

easyui的grid算一个
解决方案:
引用17楼hanjun0612的回复:

既然你脱离服务器控件,那你可以easyui+ajax+handler。至于你说的分页,都交给easyui就可以了。设置pagination:true。后台接收参数pageNumber,pageSize就可以了。(分页查询,一般就是对数据库分页查询)说白了,如果你注重前台,想摒弃asp.net的回发机制。那么就应该多关注前台的第三方控件,例如jq-ui,easyui等等。

嗯,关注easyui这个插件了
解决方案:
这种列表展现可以就使用你所说的小数据的展现方式,只不过大数据多了分页而已,你所要查询的数据库查询好之后,用分页展示,比如:有10W条数据库,每页显示50条,那么在数据库查询的时候,没次只查询50条数据,相应的显示50条数据,这样就是UI界面只用处理50条小数据了
解决方案:
引用25楼u013961050的回复:

这种列表展现可以就使用你所说的小数据的展现方式,只不过大数据多了分页而已,你所要查询的数据库查询好之后,用分页展示,比如:有10W条数据库,每页显示50条,那么在数据库查询的时候,没次只查询50条数据,相应的显示50条数据,这样就是UI界面只用处理50条小数据了

那么就要对Html画的table或者div做分页了,而且需要对table或者div列头加排序
解决方案:
我和你的情况类似,但是中间我曾经做过1年的webfrom的开发,如果要用的话,建议去看一下DTcms这个开源的项目,他里面的数据表呈现都是用的repeater来做的,分页用的一个asp的插件,挺好用的!比着写就行了!
解决方案:
webform和winform有很多相似之处大多数基于事件的驱动。webform有自己的控件和winform一样。只是控件的用法有差异。底层基本都一样。MVC是winformMVC现在是MVC5基本上有点像以前的ASP但是只是有一点像。MVC是微软对抗JAVA J2EE MVC推出的。基于RAzor语法是全新的设计模式,完全脱离了事件驱动。就HTML+RAzor+JS+CSS+后台代码+数据库。底层差不多。主要是视图交互完全脱离了基于事件的驱动
解决方案:
通过你上述问题MVC完全适合你。MVC就是拜托webform控件的垃圾反应速度请求模式。webform=aspx+aspx.csMVC=html+cs没有控件MVC+easyUI=前端前端+你以前的后端经验=现在解决问题的优势也就是说MVC=htmlaspx=服务器+请求=html
解决方案:
楼主应该是才开始做asp.net开发,其实asp.net开发不一定要用微软的那些控件,直接html+ajax+jquery已经足够了,与asp.netwebform以及mvc无关
解决方案:
和楼主一样,我接触微博webform两年多时间了,都是自己摸索实现的系统功能,列表用gridview还是listview还是datagrid,repeater之类的,数据源绑定还是后台代码事件实现等等,看情况而定,分页自带的也行使用插件都可以,自带的样式有点丑,可以找些好看的参考参考。工作流方面的我还是建议参考一些OA框架,自己写一定很麻烦而且不一定好用,借鉴下别人的定制自己的,时间和效率上会有很大提升。MVC方面有时间还是接触接触。

时间: 2024-10-24 13:25:56

asp.net webform相关讨论的相关文章

[转]asp.net mvc相关开源项目推荐

  from : http://blog.csdn.net/onlyzhangqin/archive/2008/01/07/2028471.aspx asp.net mvc ctp版本发布不到一个月时间,在社区出现了丛多的优秀开源项目,社区的活跃性非常高哦,前一段时间园子里也引发了MVC和WebForm的讨论,现在给各位推荐几个相关的优秀项目,这些项目是MVC的价值的最佳证明. 1. Asp.net mvc 和Castle 的MonoRail项目有着直接的渊源关系,第一个是Castle的Mono

Yale CAS + .net Client 实现 SSO(3)--实现 ASP.NET WebForm Client

原文地址: http://www.cnblogs.com/zhenyulu/archive/2013/01/22/2870936.html 第一部分:安装配置 Tomcat 第二部分:安装配置 CAS 第三部分:实现 ASP.NET WebForm Client 第四部分:实现基于数据库的身份验证 第五部分:扩展基于数据库的身份验证 第六部分:自定义登录页面 第三部分:实现 ASP.NET WebForm Client 1. 下载.NET CAS client. .NET CAS Client

ASP.NET WebForm页面内容输出方式

这次我们谈的话题是"Web Form页面上输出内容的方式".这其实是一个非常旧的话题了,因为本文的内容甚至可以运用于ASP.NET 1.1之上. 不过这个话题的适用范围很广,因为即使是目前最新的ASP.NET MVC框架,它的默认视图引擎依旧是基于ASP.NET WebForm的(如Page,Control,MasterPage).甚至说,由于ASP.NET MVC框架的特性,我们会遇到更多在页面上"直接输出"内容的情况.因此,这个话题在ASP.NET MVC应用中

將 ASP .NET WebForm 的 DataGrid 中的資料 匯出至 Microsoft Excel

datagrid|excel|web 將 ASP .NET WebForm 的 DataGrid 中的資料 匯出至 Microsoft Excel本文將逐步帶領您產生 ASP.NET WebForm 上的 DataGrid Web 伺服器控制項,然後將 DataGrid 內容匯出至 Microsoft Excel. 技術本文將說明兩種匯出 DataGrid 資料的技術: 使用 Excel MIME 類型 (或內容類型) 您可以使用伺服器端的程式碼將 DataGrid 連結至資料,然後在用戶端電腦

ASP.NET WebForm页面内容输出的细节分析

老赵前日的这篇博文讲的是有关ASP.NET WebForm页面内容输出方式的内容.尽管这个话题很老,不过 在ASP.NET MVC中同样适用,而且适用的情况有增无减,因此十分重要.希望这篇文章能够帮助你更好的 理解ASP.NET WebForm页面内容输出的细节. 这次我们谈的话题是"WebForm页面上输出内容的方式".这其实是一个非常旧的话题了,因为本文的 内容甚至可以运用于ASP.NET 1.1之上.不过这个话题的适用范围很广,因为即使是目前最新的ASP.NET MVC框架,它的

ASP.NET WebForm中&amp;lt;%=%&gt;与&amp;lt;%#%&gt;的区别

 这篇文章主要介绍了ASP.NET WebForm中<%=%>与<%#%>的区别,需要的朋友可以参考下     <%=%>相当于Response.Write(),是输出变量的值 <%#%>专门用于数据绑定,可以绑定一些变量或者数据源中的信息,中间绑定是数据源的条目,若想让它起作用,必须调用DataBind()方法

asp.net webform 友好路由的问题,求大神解决

问题描述 asp.net webform 友好路由的问题,求大神解决 一个webform 的项目使用了友好路由代码如下. public static class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { var settings = new FriendlyUrlSettings(); settings.AutoRedirectMode = RedirectMode.Permanent; r

仿函数、绑定、桥接、委托相关讨论

仿函数.绑定.桥接.委托相关讨论: 以下随便讨论下,没突出的中心论点,个中理论只代表我个人观点,难免有错:),欢迎指正. 一.需求: 在事件处理常常会碰到这样的情况: 1.接口分离.即invokers(调用者)与(receivers)接收者分离. 2.时间分离. 比如说:UI相关元素(按钮.菜单等)就是一个invokers. receivers则是响应命令的对象(如对话框或应用程序本身). 这需要我们要先将UI相关元素的事件响应的接收者在初始化时先保存起来. 待后用户按下按钮等再触发(即invo

asp.net DataTable相关操作集锦(筛选,取前N条数据,去重复行,获取指定列数据等)_实用技巧

本文实例总结了asp.net DataTable相关操作.分享给大家供大家参考,具体如下: #region DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回 /// <summary> /// DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回 /// eg:SortExprDataTable(dt,"Sex='男'","Time Desc&quo