通过判断IsPostBack属性判断是否首次加载。在页面首次加载时,编写控件初始化代码和页面变量初始化代码
Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
1.session 在服务器端,cookie 在客户端(浏览器)
2.session 默认被存在服务器的一个文件里(不是内存)
3.session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id)
4.session 可以放在 文件、数据库、或内存中都可以。
5.用户验证这种场合一般会用 session 因此,维持一个会话的核心就是客户端的唯一标识,即 session id
初始化-》加载视图状态-》处理回发数据-》加载-》发送回发更改通知-》处理回发事件-》预呈现-》保存状态-》呈现-》处置-》卸载
页面间传值:
1.使用QueryString变量。
2.PostBackUrl()方法。
3.使用Server.Transfer方法。
应用程序范围内传值:
1.使用Cookie对象变量。
2.使用Session变量。
3.使用Application对象变量。
使用AJAX实现异步刷新就是在用户“无察觉”的情况下“偷偷”访问了远程服务器进行工作,然后将结果返回后由JS提供在客户端,让用户感受好像B/S架构的程序和C/S的差不多的感觉。
1.打开IIS管理器。
2.展开“本地计算机”-“网站”目录,选中“默认网站”节点,右键“属性”,设置主目录。
3.右键“默认网站”图标,选择“新建”-“虚拟目录”命令。IIS将启动“虚拟目录创建向导”对话框帮助我们完成创建虚拟目录的步骤。
4.单击对话框的“下一步”按钮以显示虚拟目录别名页,如HelloWorld。别名是我们用来标识该目录中的资源的名称。在VS.NET中,别名是用来指定项目位置的名称。
5.单击“下一步”按钮,以显示Web站点内容目录页。在此,输入包含此网站内容的目录的路径。
6.单击“下一步”按钮,打开虚拟目录访问权限设置页面。选中“读取”复选框和“运行脚本”复选框。
7.单击“下一步”按钮,再单击“完成”按钮创建虚拟目录并终止向导。查看IIS管理器中虚拟目录的创建结果,可以发现,默认网站中多了一个齿轮状图标的HelloWorld节点。
如果当前还不是齿轮状,右键节点,打开属性页,在虚拟目录中的应用程序设置中创建应用程序名为HelloWorld的应用程序就可以了
MVC是三个单词的首字母缩写,它们是Model(模型)、View(视图)和Controller(控制)
从结构上看,可以分成三层:
1)最上面的一层,是直接面向最终用户的"视图层"(View)。它是提供给用户的操作界面,是程序的外壳。
2)最底下的一层,是核心的"数据层"(Model),也就是程序需要操作的数据或信息。
3)中间的一层,就是"控制层"(Controller),它负责根据用户从"视图层"输入的指令,选取"数据层"中的数据,然后对其进行相应的操作,产生最终结果。
这三层是紧密联系在一起的,但又是互相独立的,每一层内部的变化不影响其他层。每一层都对外提供接口(Interface),供上面一层调用。这样一来,软件就可以实现模块化,修改外观或者变更数据都不用修改其他层,大大方便了维护和升级。
所谓 “状态管理”,是指使用ASP.NET中的ViewState、Cookie、Session和Application等对象实现页面数据缓存和传递的技术。
1.aspx页面中的page_load
2.UserCtrl1中的page_load
3.用户控件uiAdd()
4.Button1点击后将触发Button1_Click事件
foreach (System.Windows.Forms.Control control in this.Controls)
{
if (control is System.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ;
tb.Text = String.Empty ;
}
}
上边的方法只是针对于桌面软件类的,如果要针对于web开发中怎么实现呢?
首先.aspx文件一定会包含一个: 只有在此标记中的代码享有和后台交换。
由此:
foreach(System.Web.UI.Control ctl in this.Form.Controls){
if (ctl is System.Web.UI.WebControls.TextBox)
{
System.Web.UI.WebControls.TextBox tb = (System.Web.UI.WebControls.TextBox)ctl;
tb.Text = string.Empty;
}
}
WebService 就是web服务。是微软主推的一种跨平台的分布式应用程序。他使用SOAP协议通讯,用XML封装数据,所以是跨平台的。任何客户端只要按照WebService发布的格式发送数据就都可以得到结果。
Control:所有控件的基类。
可以,每个页的cs文件中定义的类就是继承这个类的
Html控件:
1.Html控件就是我们通常说的Html语言标记,Html是以Input为前缀的。不能在服务器端控制。如果Html想要在服务器端控制,就加上”Runat=“Server””这句话,就构成了Html服务器控件。Html服务器控件可也运行在服务器端,能够在后台对其进行设置修改。
2.Html控件直接发送给浏览器,不灵耗费服务器资源
Web控件:
1.Web控件是构成ASP.Net服务器控件的一部分,Web控件是以Asp:为前缀的他不像Html需要加上”Runat=“Server””才可以运行在服务器端,它本身隐身包含这句话。
2.Web控件需要通过服务器处理后译为Html控件在发送给浏览器,所以比较耗费服务器资源,并由于有VIEWSTATE,所以在会送的时候会保持控件状态(也可以不保存),也因此增加了回送信息量。
ASP.NET的数据绑定:控件中数据的变化不会自动同步到数据源中,传统数据绑定可以自动同步。
在GridView里面加入模版列。把GridView拖入以后这个控件的右上角有一个小箭头,然后选择编辑列,然后在里面添加一个模版列(TemplateField),然后点确定,关闭编辑,然后在GridView控件上点鼠标右键选择编辑模版列,在那个ItemTemplate里面拖入下拉列表控件,然后再为这个下拉列表控件选择数据源就行了!或者你可以使用代码绑定,也可以!如果是使用代码绑定的话,是在GridView的RowDataBound的时间里面,然后用e.FindControl("下拉列表的控件ID") as DropDownList 找到下拉列表控件就行了
如果在web窗体中使用了验证控件,那么当验证控件中的验证逻辑没有通过时一般会使事件不能触发执行。
如果使用了诸如Textchange、Checkchange、Selectedindexchanged这类事件并在服务器端进行了事件处理,但是没有设置AutoPostBack=true属性时会使事件不能触发执行。
转发的特点:forward
1.转发地址栏路径不变
2.转发只能访问当前服务器下的资源
3.转发是一次请求,可以使用request对象来共享数据
4.请求来源:服务器内部使用,不需要加虚拟目录。
跳转(重定向)的特点:redirect (浏览器响应头:302,即重定向)
1.地址栏发生变化
2.重定向可以访问其他站点(服务器)的资源
3.重定向是两次请求。不能使用request对象来共享数据
4.请求来源不同:客户端浏览器发起,需要加虚拟目录,动态获取request.getContextPath()
HttpContext。如果需要在网页类之外的其他类中访问ASP.NET系统对象时,需要使用上下文对象。
常用事件执行次序:Init(初始化) -> Load(加载) -> Event(控件事件) -> PreRender(呈现之前) -> UnLoad(卸载)
可能情况:
1)可能事件没有关联
2)根本就没有写读取代码
3)写错了事件
4)在Load事件中有清空代码,但没有写 if (!IsPostBack)
是否所用控件都可以禁用? Web页面是没有状态的,ViewState(视图状态)可用来保存Web页面在客户端和服务器端往返过程的状态
说简单点ViewState只不过是Hidden控件,加上微软写上的一些代码而已
可以禁用,有三种方法:
1)禁用单个控件:控件.EnableViewState = false。
2)禁用单个页面:在@Page指令中设置这个属性以达到页面级禁用ViewState的目的。
3)禁用整个程序:修改Web.config中相应元素的属性即可。最后,禁用服务器全局的ViewState,修改.Net Framework安装目录下的machine.config即可。
ASP.NET中的页面由两部分组成,页面显示(aspx文件)和代码逻辑(aspx.cs文件)通过Page指令联系在一起,如下:所以关系为:Web页面会继承隐藏类。
可以,其调用过程大致如下:用户使用WEB控件或者html服务端控件,控件的调用方法事件被激发,于是服务器开始自动寻找所匹配的方法代码,当在客户端找到后解释执行客户端的方法代码,完毕后继续返回服务器执行剩余代码.
在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,然后根据传回的状态信息自动调用服务端事件自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到务端
只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件27. 请解释ASP.NET中以什么方式进行数据验证?.net中提供了几个数据验证控件,可以在服务器端或者客户端进行验证。
WEB控件是能拖放在WEB页面上的控件
WEB控件分为:内部控件, 列表控件, 复杂控件, 验证控件
WEB控件优势:Web 控件是对象
–与对象一样,Web 控件拥有方法和属性,并且响应事件
–一旦将 Web 控件包括在 Web 页中,就可以设置其属性并调用其方法
–可以为 Web 控件编写服务器端代码以响应在客户端上发生的事件
1、Remoting可以灵活的定义其所基于的协议,如果定义为HTTP,则与Web Service就没有什么区别了,一般都喜欢定义为TCP,这样比Web Service稍为高效一些
2、Remoting不是标准,而Web Service是标准;
3、Remoting一般需要通过一个WinForm或是Windows服务进行启动,而Web Service则需要IIS进行启动。
4、在VS.net开发环境中,专门对Web Service的调用进行了封装,用起来比Remoting方便
1.使用WSDL.exe命令行工具。
2.使用VS.NET中的Add Web Reference菜单选项
SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。
SOAP 是一种轻量级协议,用于在分散型、分布式环境中交换结构化信息。 SOAP 利用 XML 技术定义一种可扩展的消息处理框架,它提供了一种可通过多种底层协议进行交换的消息结构。 这种框架的设计思想是要独立于任何一种特定的编程模型和其他特定实现的语义。
什么是UDDI?
UDDI 是一个独立于平台的框架,用于通过使用 Internet 来描述服务,发现企业,并对企业服务进行集成。具体是:
1、UDDI 指的是通用描述、发现与集成服务
2、UDDI 是一种用于存储有关 web services 的信息的目录。
3、UDDI 是一种由 WSDL 描述的 web services 界面的目录。
4、UDDI 经由 SOAP 进行通信
5、UDDI 被构建入了微软的 .NET 平台
什么是WSDL?
WSDL 是基于 XML 的用于描述 Web Services 以及如何访问 Web Services 的语言。
WSDL的作用
Web services 可把您的应用程序转换为 web 应用程序。通过使用 XML,可以在应用程序间传送消息。最大的意义就是不管你使用什么的语言编写的WEB应用,只要有WSDL,便可以自由的调用!
是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate server或SQL Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。
就是asp的升级版,asp之前是C#代码与html在一起写的,美工人员不容易维护,因为他看不懂C#代码,所以才有了asp.net这样的有了隐藏类,html与代码进行了分离,但这是紧耦合,一但没有了隐藏类,就会报错,MVC就解决了这一现象,视图、控制器分离
每个asp.net页有一个对应的.aspx页和一个对应的aspx.cs可编译逻辑,每个asp.net 控件有相应的事件处理,他们是由属性中的DataBinding绑定相应的事件处理。在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,然后根据传回的状态信息自动调用服务端事件自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到务端
只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件36. 什么是ASP.NET中的用户控件用户控件就是扩展名为.ascx的特殊页面,它不能像.aspx页面一样直接访问,用户控件用以在同一应用程序中实现功能和外观的重用。
区别:
ASP是解释性编程框架,而ASP.NET是编译性框架;
ASP.NET无论是从执行效率和安全上都远远超过
ASP;ASP.NET实现了代码分离,让代码管理更加直观。
代码后置, 即HTML代码与C#代码写在不同的文件中,使得代码更整洁和便于维护.
Windows: 使用IIS验证方式 Forms: 使用基于窗体的验证方式 Passport: 采用Passport cookie验证模式 None: 不采用任何验证方式
可以。
<%# %>表示绑定的数据源,<% %>是服务器端代码块
使用用户配置Profile,或者自行编程存储在数据库中。
不可以,因为页面的每一次生命周期页面对象都是重新实例化的。
利用反射,配置将对象和数据库表映射。
Request类:
1.getSession():获取Session对象
2.getCookies():获取所有的Cookie,返回一个Cookie数组
3.getMethod():获取请求类型
Response类:
1.setHeader():设置消息头
2.addCookie():添加Cookie
3.setContentType():告知浏览器数据类型
前者是服务器端代码块,后者表示绑定的数据源
MVC的优点:
1.通过把项目分成Model、View和Controller,使得复杂项目更加容易维护,减少项目之间的耦合。
2.没有服务器表单控件,可以更方便的控制应用程序的行为
3.应用程序通过Controller来控制程序请求,并提供了原生的UrlRouting功能来重写Url。
4.使Web程序对单元测试的支持更加出色5.强类型view实现,更安全,更高效。
答:webapi用的是http协议,webservice用的是soap协议webapi无状态,相对webservice更轻量级。webapi支持如get,post等http操作
有12种,最主要的是ActionResult类,它是一个基础类,它有11个子类型。ViewResult - 给响应流渲染指定的视图
PartialViewResult - 给响应流渲染指定的局部视图
EmptyResult - 返回空的响应结果。
RedirectResult - 执行一个HTTP转向到指定的URL。
RedirectToRouteResult -执行一个HTTP转向到一个URL,这个URL由基于路由数据的路由引擎来决定
JsonResult - 序列化一个ViewData对像到JSON格式。
JavaScriptResult - 返回一段Javascript代码,它可以在客户端执行。ContentResult - 写内容到响应流,不需要视图支持。
FileContentResult - 返回一个文件到客户端。
FileStreamResult - 返回一个文件到客户端,它提供的是流。
FilePathResult - 返回一个文件到客户端。
ActionFilter(方法过滤器):接口名为[IActionFilter],在控制器方法调用前/后执行
ResultFilter(结果过滤器):接口名为[IResultFilter],在控制器方法调用完,跳转至view页面前/后执行
AuthorizationFilter(授权过滤器):接口名为[IAuthorizationFilter],所有过滤器中最先执行的
ExceptionFilter(异常处理过滤器):接口名为[IExceptionFilter],在控制器方法抛出异常时执行