开篇:毫无疑问,ASP.Net WebForm是微软推出的一个跨时代的Web开发模式,它将WinForm开发模式的快捷便利的优点移植到了Web开发上,我们只要学会三步:拖控件→设属性→绑事件,便可以行走于天下。但这样真的就可以走一辈子吗?实际上,ASP.Net经常被喷的诟病就在于WebForm以及只会拖控件的ASP.Net程序员,往往大型互联网系统也没有采用WebForm的模式进行开发。但是,WebForm并不是一无是处,而是我们没有用好,还有很多东西我们知其然不知其所以然,现在我们就来对这些平时所不注意但又十分关键的东西一探究竟。
作者:苏红超 导读 代码绑定是ASP.NET提供的一个重要的新技术。本文将会为您展示如何数据库
protected void Button1_Click(object sender, EventArgs e)
2) 通过页面隐藏模型重写Discuz.Web-install-index.aspx页面
本文由来源 21aspnet,由 javajgs_com 整理编辑,其版权均为 21aspnet 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同或支持。如需转载,请注明文章来源。
引言 ASP.NET提供了卓越的事件驱动编程模型,让开发者简化了应用程序的总体设计,但是这个也造成了它固有的一些问题,例如,使用传统的ASP里,我们可以通过使用POST方法很容易地实现页面间传递值,同样的事情,在使用事件驱动编程模型的ASP.NET就不是那么容易了,当然了,我们仍然有一些方法可以实现同样的功能。本文将试着使用不同的可能的方法来解决这个问题,但可以预见是,本文将包含使用querystring,session变量以及server.Transfer方法来实现页面间的值传递。
作者:Billy McCafferty 翻译:张善友 原文地址:http://www.codeproject.com/useritems/ModelViewPresenter.asp 这篇文章描述了ASP.NET 2.0使用Model-View-Presenter 模式实现业务逻辑与表现层的适当分离。 Download trivial example of MVP - 18 Kb Download simple Event-Handling MVP - 19 Kb Download sample M
使用ASP.NET中的代码绑定技术来使得代码重用变得简单可行。我们发现,利用代码绑定技术我们可以容易的将我们的代码和内容分离开来,利用它可以建立可重用的代码,只是这种技术本身也存在着一些局限性。在本文中,我们将会一同探讨另外一种新的ASP.NET技术:用户控件。 什么是用户控件(User Controls)? 为了能更好的理解用户控件的重要性,我们先来看看一段小小的“历史”。在以前的ASP当中,可重用的技术实现选择是相当受限制的。许多的开发者一般都是借助将公共的常用的子过程放到那些包含文件当中的做法来实现一定的所谓代码重用的。比如,如我们想要在许多的ASP页面当中现实一个下拉列表框,我会在一个包含文件当中建立一个函数,样子如下所示: Function GetListBox(asSelectedItem) '为HTML的选择控件建立字符串 '返回这个字符串 End Function 当然,这样的做法的确在一定程度上做到了重用,但是为了能做到更加通用性,你不得不要增加更多的参数。为了使得类似上面的你需要整理的代码得以正常工作是困难的,因为要达到提供它的通用性(可重用性),你大概不得不去修改这些已经存在的代码,以便使得他们也能在新的环境下正常工作。 IIS5中的VBScript5.0增加了建立类的功能。这就使得我们可以通过一个较多面向对象的方式来实现可重用的代码。 Class ComboBox Property Let ControlName(vData) . End Property <More properties and methods here> End Class 这样做会稍微好一些,但是开发者仍旧需要被迫去编写那些函数,以便返回HTML代码。而且,他也没有能力操纵那些类的实例对象的事件。为了能做到操作事件,开发者不得不建立一些COM组件,而后者则增加了应用程序的额外的复杂度。 有了ASP.NET,我们拥有了一个新的简单的工具来编写可重用的代码—用户控件。用户控件(也叫pagelets)提供了这样一种机制,他使得我们可以建立能够非常容易的被ASP.NET页面使用或者重新利用的代码部件。一个用户控件也是一个简单的ASP.NET页面,不过它可以被另外一个ASP.NET页面包含进去。在你的ASP.NET应用程序当中使用用户控件的一个主要的优点是用户控件的支持一个完全面向对象的模式,使得你有能力去捕获事件。而且,用户控件支持你使用一种语言编写ASP.NET页面其中的一部分代码,而使用另外的一种语言编写ASP.NET页面另外一部分代码,因为每一个用户控件可以使用和主页面不同的语言来编写。 建立一个用户控件 在建立你自己的用户控件之前,你也许想知道在你的web页面中哪些可见的对象是能够重用的好的候选者。能可能的是,你将会在你的站点上的不止一个页面上需要使用融合的用户控件。一旦你开始不断的思考你的控件的结构,你就已经做好的开始的准备。在我们的例子当中,我们将要建立一个简单的搜索的控件,用来搜索SQL Server2000中的数据库Northwind。我们的搜索控件可以使得开发者快速的为一个web页面增加搜索能力。 建立用户控件的第一步是建立一个.ascx文件。这是用户控件需要的文件扩展名。在一个一个.ascx文件中不能包含head,form,或者body标签,因为包含此.ascx文件的.aspx文件已经包含了这些标签。一个.ascx文件只能包含方法,函数,以及和用户控件相关的内同。 在建立一个.ascx文件之后,我们想要为用户控件增加一些可视的代码。在一个用户控件当中可以包含所有的web控件。在我们的例子当中,搜索控件需要拥有一个标签,一个文本框以及一个按钮。我们首先加入这些web控件,因为我们的整个代码当中会涉及到这些对象。下面是具体的代码: <asp:Label id=lblSearch runat="server" text="Caption"></asp:Label> <asp:TextBox id=txtSearch runat="server"></asp:TextBox> <asp:Button id=cmdSearch runat="server" Text="Search" ></asp:Button> 在用户控件中有一件很酷的事情是,你可以定义你自己的属性。在我们的例子当中,我们会定义如下属性: 。LabelText—描述显示给用户的搜索条件 。ConnectiongString---用来联接到数据库的连接字符串 。ResultSetView—包含了搜索结果的数据记录集 。
【类图】 【命名空间】——————————————————【文件截图】 可能您会问,不就是弄个父类吗,怎么又是这么复杂呢?这个嘛,听我慢慢道来。 (类图里面Tree、Main1、Dat
开篇:上一篇我们了解了所谓的请求处理管道,在众多的事件中微软开放了19个重要的事件给我们,我们可以注入一些自定义的业务逻辑实现应用的个性化设计。本篇,我们来看看WebForm模式下的页面生命周期。
功能: 1.功能强大的所见即所得HTML编辑器控件(WYSWYG),完全支持ASP.NET2.0技术。
最近在写一个BBS,依照书的葫芦画我的瓢,但是就算这样其中仍然出了不少问题。刚解决如上所述问题。
站点导航提供程序--ASP.NET 2.0中的站点导航提供程序暴露了应用程序中的页面的导航信息,它允许你单独地定义站点的结构,而不用考虑页面的实际物理布局。默认的站点导航提供程序是基于XML的,但是你也可以通过编写自定义的提供程序,从任何后端位置暴露这些信息。
Asp.net UpdatePanel 允许用户构建一个丰富的,以客户端为中心的应用程序,引用UpdatePanel控件,能够实现页面的部分刷新,一个包含scriptManage和 UpdatePanel控件的页面自动具有页面部分刷新的功能,不需要写任何的客户端JavaScript代码。一个web页面只能包含一个 ScriptManage控件,但可以包含一个或多个UpdatePanel控件。
脚本控件的作用 ASP.NET AJAX的脚本控件,连接了服务器端和客户端,因为我们(可以)只在服务器端编程,而效果产生在客户端,这就需要我们首先在服务器端编写一个控件类,然后包含一个或几个脚本文件,其中定义了客户端组件,可以让开发人员只在服务端操作控件,而在页面上添加客户端行为 一个典型的脚本控件就是UpdateProgress,我们来看一下它的实现方式 一个UpdateProgress的简单示例 创建一个aspx页面 <%@ Page Language="C#" AutoEventWireup="tru
Page.ClientScript.RegisterStartupScript(Page.GetType(), “”, “<script>window.open(‘default2.aspx’)</script>”); 如果页面中使用了Ajax ,则上述代码即使执行也无效果。对这种情况我们通常采用: ScriptManager.RegisterStartupScript(this.Button1, this.GetType(), “alertScript”, “window.open(‘default2.aspx’);”, true); 其中第一个参数为要注册脚本的控件ID,试了一下,只要是本页面的就行。 第二个参数为注册脚本控件类型,是控件还是this的GetType()都可以,typeOf(string)也没问题. 第三个脚本函数的名字,随便起。 第四个是脚本内容。 第五个是标明是否再添加脚本标签,如果第四个参数里包含了<script></script>标签,此处则为false,否则为true。
在做一个文章添加功能时,想在选择大类后,自动将其所属二级小类显示出来,使用DropDownList的SelectedIndexChanged事件可以很容易实现,但每次选择后页面总要刷新一次,让人感觉很不爽。为实现DropDownList无刷新二级联动,这几天在网上找了些资料,但都无法达到我想要的效果,经过反复调试,现已基本实现了此功能,现将代码附下。
1.打开新窗口 这个简单:Response.Write(@ language=javasJavaScript
开篇:经历了上一篇《aspx与服务器控件探秘》后,我们了解了aspx和服务器控件背后的故事。这篇我们开始走进WebForm状态保持的一大法宝—ViewState,对其刨根究底一下。然后,再对曾经很流行的ASP.Net AJAX方案中的利器—UpdatePanel这个神奇的区域一探究竟。
1、ScriptManager.RegisterStartupScript 方法 (Page, Type, String, String, Boolean):
大家好,又见面了,我是你们的朋友全栈君。DropDownList 控件用于创建下拉列表。DropDownList 控件中的每个可选项都是由 ListItem 元素定义的! 提示:该控件支持数据绑定! DropDownList 控件是一个下拉式的选单,功能和 RadioButtonList Web控件很类似,提供用户在一群选项中选择一个;不过RadioButtonList Web控件适合使用在较少量的选项群组项目,而DropDownList Web 控件则适合用来管理大量的选项群组项目。
在线演示:http://demo.naturefw.com/ 开源协议 一直想说来着,可是总忘。开源协议采用 BSD开源协议。 一直在说开源,但只是把源码放出来了,连个开源协议都没说,虽然说了也基本等于没说。但是还是要说一下的。 再有就是会陆续把文档完善出来。 版本说明 稳定版的含义,指的是元数据的结构、对外接口(类名、函数名、参数等)稳定下来,以后的版本都会以这个版本为准,兼容这个版本的格式。 那怎么又出来了beta1呢,那是因为虽然现在大部分都稳定了,但是还是有一些小地方没有最后确定,
在做网站的时候,都会用到用户登录的功能。对于一些敏感的资源,我们只希望被授权的用户才能够访问,这让然需要用户的身份验证。对于初学者,通常将用户登录信息存放在Session中,笔者在刚接触到asp.net的时候就是这么做的。当我将用户信息存在在Session中时,常常会遇到Session丢失导致用户无法正常访问被授权的资源,保持用户登录状态时的安全性问题,无休止的将用户导航到登录页面等莫名其妙的问题。
ASP.NET Panel 控件用于将一组控件组织在一起,并可以通过控件的 Visible 属性来控制它们的可见性。
1、 从Control到GridView继承了多少层? (这个图可不是现做的,这是以前为了写QuickPager分页控件而弄的。http://www.cnblogs.com/jyk/archive/
局部更新是ajax技术的最基本,也是最重要的用法,今天大概把asp.net ajax中的局部更新控件 updatepanel的用法记录下,大家可以共同探讨
这篇文章经典,看过之后大受启发。值得一看!看来ASP.NET跟JSP其实是一样的,本质上没区别,ASP.NET能做到的JSP一样可以做到,反之亦然。只不过ASP.NET的框架看起来先进一点,不过JSP也在发展,似乎也出现了类似ASP.NET的框架。 一、服务器脚本基础介绍 首先,我们先复习一下Web服务器页面的基本执行方式: 1、 客户端通过在浏览器的地址栏敲入地址来发送请求到服务器端 2、 服务器接收到请求之后,发给相应的服务器端页面(也就是脚本)来执行,脚本产生客户端的响应,发送回客户端 3、 客户
分页控件、查询控件、显示数据的控件和表单控件,终于把这几个控件结合在一起了,和在一起之后就可以让“增删改查”变的非常的简单和容易了,当然还需要数据访问函数库的支持。 综合演示的IDE是 vs2008,.net Framework2.0,C#, B/S 。目标(适用范围)是网站的后台管理、OA、CRM、CMS等信息管理方面的项目。 演示网址:http://jyk.mainsdn.com/ 感谢 CleverKing (www.mainsdn.com)提供空间和域名。 自
上次比较匆忙,Ajax的分页方式仅实现了基本功能,或者说只是验证了我的想法。现在对Ajax分页有做了一些调整,现在可以正式用了。 使用方法还是非常简单,可以完全按照URL分页方式来做,只需要把PagerTurnKind 属性 设置为:PagerTurnKind.AjaxForWebControl;就可以了。 然后前台需要引用jquery-1.4.2.min.js和QuickPager-1.0.js。QuickPager-1.0.js是QuickPager需要用的一个js脚本,Demo里面有这个j
阅读目录 用什么来展示数据列表? 表格还是列表? 表头 对表格输出的封装 生成表格的实例 功能的扩展 在页面数据和控件的自动交换机制中,我们通过PageX实现了一种快速的控件和数据交换机制,能够方便快捷地完成数据库中的数据记录的管理。一般情况下,在进入这个编辑页面之前,还应该有另外一个页面,可以一次展示多条数据记录的信息。在这个数据的列表界面中,可以进行各种操作,如删除、跳转、编辑等。这个数据列表页面不仅可以按照数据库的分类展示数据,也可以根据需要进行展示,如按指定字段排序、根据查询结果展示、分
我这里只写几个常用的事件 1.OnPreInit:此事件后将加载个性化信息和主题 2.OnInit:初始化页面中服务器控件的默认值但控件的状态没有加载,没有创建控件树 3.OnPreLoad:控件完成
前一段时间有两个朋友问我,为什么在HttpModule中无法获得到Session值,因为他们希望自定义一个HttpModule,然后在其中获取Session来进行用户验证。我奇怪为什么不使用.Net Framework已经提供的验证机制,而要和Asp时一样,自己手工进行cookie+Session验证?我们是基于.Net Framework这个平台进行编程,所以我觉得,在很多情况下,使用Framework已经建立好的机制会显著地提高工作效率,而且.NET Framework内置的验证机制通常也更加安全。
摘要:ASP.NET为保持用户请求之间的数据提供了多种不同的途径。你可以使用Application对象、cookie、hidden fields、Sessions或Cache对象,以及它们的大量的方法。决定什么时候使用它们有时很困难。本文将介绍了上述的技术,给出了什么时候使用它们的一些指导。尽管这些技术中有些在传统ASP中已经存在,但是有了.NET框架组件后该在什么时候使用它们发生了变化。为了在ASP.NET中保持数据,你需要调整从先前的ASP中处理状态中学习到的知识。
本文转自:http://www.cnblogs.com/shangxia/articles/2281782.html
ASP.NET标准控件功能强大,虽然在编程方面方便点,后台代码可以任意访问到并操作,但CSS对母版内容页里的标准控件则很难。原因是经过编译之后的页面标准控件的ID都会变为母版页占位符和原ID的合成字符串,已经不是原来的ID值了,此时如果你的CSS是用ID来定位则失效(在没有母版页的普通aspx页面里标准空间的id值经过编译之后不会变化)。这就是为什么VS中查看到的代码和浏览器中看到的不一样的原因了。因此用CSS来定位最好是使用Class或者CssClass来做。
在传统的WebForm模式下,我们请求一个例如http://www.aspnetmvc.com/blog/index.aspx的URL,那么我们的WebForm程序会到网站根目录下去寻找blog目录下的index.aspx文件,然后由index.aspx页面的CodeBehind文件(.CS文件)进行逻辑处理,其中或许也包括到数据库去取出数据(其中的经过怎样的BLL到DAL这里就不谈了),然后再由index.aspx页面来呈现给用户。
RangeValidator 控件用于检测用户输入的值是否介于两个值之间。可以对不同类型的值进行比较,比如数字、日期以及字符。我们一般会用来验证输入的年龄或者考试的分数等。
目的: 1、一个页面(DataList.aspx)可以显示多个模块的列表功能。 一般是有一个列表需求就需要一个aspx文件,如果有100个列表,那么就会有100个aspx文件,这么多的文件(包括.aspx.cs文件)里面的内容基本是一样的,这样写起来麻烦,管理起来也不容易,命名就是一个比较头痛的问题。文件多了。打开IDE、备份程序文件、编译所需要的时间都会增长。这些都是很郁闷的事情。那么我们能不能“合并”一下呢?所有(或者大部分没有特殊情况的)列表都是用同一个aspx文件呢。
需求很简单,在SQL Server数据库中存放用户上传的Visio文件,然后使用Visio Viewer在IE中直接显示用户上传的Visio文件的内容。
特点: 1、 使用js方法,把需要的数据一次性写入到页面里,然后用js来实现联动的效果。 2、 支持n级。 3、 封装成了服务器控件,所以使用非常简单。 4、 支持在回发的时候保持状态。 5、 支持修改记录的时候设置默认选项。 6、 页面设置比较灵活。 7、 采用DataSet作为数据的容器。 缺点: 1、 由于是把需要的数据一次性写入页面交给客户端,所以在网速比较慢的时候,显示页面需要比较长的时间。 可以改进的地方: 1、 引入json,可以把需要的数据放到单独的js文件里面,这样可以减少带宽的压力。 2
在ASP.NET中有几种基于页面间的传值方法:常见的有QueryString.这种方法最简单不过了,
大家好,又见面了,我是你们的朋友全栈君。关于在同一个页面中使用Gridview控件的时候发现气updaeting事件无法被服务器所响应,看来它的错误报警然后查询了部分资料现在将整理的解决方法总结如下:点击update 事件无法响应原因出在回发或回调参数无效。在配置中使用 <pages enableEventValidation=”true”/> 或在页面中使用 <%@ Page EnableEventValidation=”true” %> 启用了事件验证。出于安全目的,此功能验证回发或回 调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentException: 回发或回调参数无效。在配置中使用 < pages enableEventValidation=”true”/> 或在页面中使用 <% @ Page EnableEventValidation=”true” %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数 是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
QuickPager分页控件的特点 两种运行方式:自动运行、手动运行。前者便捷,后者灵活。 多种分页方式:Postback、Postback伪URL、URL、URL重写、Ajax For服务器控件伪URL。 多种分页算法:Max、颠倒Top(优化版)、Row_Number、自动适应等。可以应对多种数据库和各种需求。 支持多种数据显示控件:GridView、DataList、Repeater等控件。有DataSource和DataBind()的控件都支持。 不需要存储过程,但是仍然可以保证高效率!
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、
【原理】 在页面上放置一隐藏控件,并在页面最后放上一段脚本代码,脚本代码检测隐藏控件的value是否为空,若不为空则弹出对话框显示信息,否则什么也不做。 后台代码在需要的时候修改隐藏控件的value,这样当页面传到用户那时,最后的脚本代码将执行并弹出对话框。 【注意事项】 1. 隐藏控件必须是HTML控件,否则javascript无法找到。 2. 后台代码要修改隐藏控件的值,隐藏控件自然得加上runat=”server” 标记。 3. 在弹出对话框
Microsoft AJAX Library定义了一个客户端组件的模型,它的基类是Sys.Component,它实现了三个接口Sys.IDisposable,Sys.INotifyDisposing,Sys.INotifyPropertyChange Sys.Component成员 get_events() get_id(); set_id(); get_isInitialized(); initialize(); dispose(); raisePropertyChanged(); Sys.IDispos
【自然框架】之鼠标点功能现(一):单表的增删改查(即上次5月23日活动的一个主题)【Demo、源码下载】 看了大家的回复,好像不少人误会了,我为了突出“鼠标点,功能现”,所以没有说代码,没有贴代码,这就让一些人认为我想要完全抛弃VS,自己写一个“平台”来代替,不好意思,您高估我了,我可达不到。我只是想“简单的事情点鼠标就可以了,复杂的事情就要写代码了”。 还是举例子吧。比如说上次里的【表8:添加列表信息】、【表9:功能按钮】(添加按钮)、【表12:修改查询条件】、【表13:调整表单
很久没有发文了,一是忙上线的事。二是有些颓废了,身体虚弱了,感觉工作没有激情了,不太想写。好了,既然承诺了写下去,那么就坚持吧。
领取专属 10元无门槛券
手把手带您无忧上云