asp.net Web表单

电脑杂谈  发布时间:2020-03-23 18:08:28  来源:网络整理

aspnet mvc项目里创建一个web窗体_aspnet web窗体应用程序_aspnet web窗体应用程序

1. HTTP请求格式:

<请求行>

<空白行>

[]

在HTTP请求中,第一行必须是请求行,该行指定请求的类型,要访问的资源以及所使用的HTTP版本. 其后是标头部分,该部分描述了服务器要使用的其他信息. 标头后面有一个空白行,您可以在此[称为正文]之后添加其他任何数据.

2. GET和POST之间的区别

HTTP定义了与服务器交互的不同方法. 最基本的方法是GET和POST.

HTTP-GET和HTTP-POST是标准协议动词,使用HTTP编码和传输变量名/变量值对参数,并使用相关的请求语义. 每个HTTP-GET和HTTP-POST都包含一系列HTTP请求标头. 这些请求标头定义了客户端从服务器请求的内容,并且响应由一系列HTTP响应标头和响应数据组成. 如果请求成功,则返回答复.

HTTP-GET使用MIME类型应用程序/ x-www-form-urlencoded以urlencode文本格式传递参数. Urlencoding是一种字符编码,可确保要传输的参数由兼容的文本组成,例如,空格的编码为“%20”. 附加参数也可以视为查询字符串.

类似于HTTP-GET,HTTP-POST参数是URL编码的. 但是,变量名/变量值不是作为URL的一部分传输的,而是在实际的HTTP请求消息中传输的.

(1)get是从服务器获取数据,而post是将数据发送到服务器.

(1)在客户端,Get方法通过URL提交数据,并且可以在URL中看到数据. 在POST方法中,数据是在HTML HEADER中提交的.

(2)对于get方法,服务器使用Request.QueryString来获取变量的值. 对于post方法,服务器使用Request.Form获取提交的数据.

(2)GET方法提交的数据最多只能有1024个字节,而POST没有此限制.

(3)安全问题. 如(1)所述,使用Get时,参数显示在地址栏中,而Post不显示. 因此,如果数据是中文数据和非敏感数据,则使用get;如果用户输入的数据不是汉字且包含敏感数据,则最好使用post.

注意: 所谓的安全性是指此操作用于获取信息而不是对其进行修改. 幂等意味着对同一URL的多个请求应返回相同的结果. 完整的定义似乎并不严格. 换句话说,GET请求通常不应具有副作用. 从根本上说,目标是当用户打开链接时,可以确保从她的角度来看资源没有发生变化. 例如,新闻站点的首页不断更新. 尽管第二个请求返回了另一批新闻,但是由于该操作始终返回当前新闻,因此该操作仍被视为安全且幂等的. 反之亦然. POST请求不是那么容易. POST表示可能会更改服务器上资源的请求. 仍以新闻网站为例,读者对文章的评论应通过POST请求来实现,因为提交评论后的网站有所不同(例如,文章下方出现评论).

下面是一个简单的例子来说明区别:

<!-分别通过get和post提交表单->


aspnet web窗体应用程序_aspnet web窗体应用程序_aspnet mvc项目里创建一个web窗体


<%If Request.QueryString(“ Text”)<>“”然后%>

通过get方法传递的字符串是: “ <%= Request.QueryString(” Text“)%> ”

<%If If%>

<%If Request.Form(“文本”)<>“”然后%>

Post传递的字符串是: “ <%= Request.Form(” Text“)%> ”

<%If If%>

2: 自动环回: 在ASP.net中,客户端事件发生在客户端,服务器端处理发生在服务器端. 这意味着响应事件需要一定的负担. 因此,在ASP.net的世界中,快速触发诸如鼠标移动事件之类的事件是完全不切实际的,因此您可以使用javaScript来操纵诸如鼠标移动之类的事件. 更好的方法是使用ASP.net Ajax控件. 使用自动环回时,需要将Web控件的AutoPostBack属性设置为true(默认值为false以优化性能). 设置为true时,ASP.net使用客户端JavaScript连接客户端和服务器代码. 换句话说,ASP.net会自动将客户端javaScript转换为服务器端ASP.net事件.

3: 查看状态

Web应用程序是无状态的. 每次从服务器请求网页时,都会创建该网页类的新实例. 这通常意味着与页面及其控件关联的所有信息在每次往返过程中都会丢失. 例如,如果用户在HTML页面上的文本框中输入信息,则此信息将发送到服务器aspnet web窗体应用程序,但不会返回给客户端. 为了克服Web编程的固有局限性,ASP.NET页面框架包括几个状态管理功能,这些功能将往返过程之间的页面和控制值保存到Web服务器,其中之一是视图状态. 有关状态管理的更多信息,请参见ASP.NET状态管理概述.

视图状态是ASP.NET页面框架用于在往返之间保存页面和控制值的默认方法. 呈现页面的HTML形式时,在回发过程中需要保留的页面的当前状态和值将被序列化为Base64编码的字符串,并输出到隐藏的视图状态字段. 通过实现自定义PageStatePersister类来存储页面数据,您可以更改默认行为并将视图状态存储到其他位置,例如SQL Server. 有关将页面状态存储在流而不是隐藏页面字段上的示例,

查看状态提供特定ASP.NET页的状态信息. 如果需要在多个页面上使用信息,或者在访问网站时需要保留信息,则应使用其他方法(例如应用程序状态,会话状态或个性化设置)维护状态.

视图状态信息将被序列化为XML,然后使用Base64编码进行编码,这将生成大量数据. 当页面回发到服务器时,视图状态的内容作为页面回发信息的一部分发送. 如果视图状态包含很多信息,则可能会影响页面的性能. 因此,建议您使用应用程序的典型数据来测试页面性能,以确定视图状态的大小是否引起了应用程序的性能问题. 有关使用视图状态的其他注意事项,请参见ASP.NET状态管理建议.

在某些情况下(例如,在每次回发时从数据存储刷新数据驱动页面),应关闭视图状态以删除由数据控件(例如GridView控件)生成的大量隐藏字段

另一个重要的考虑因素是,如果隐藏字段中的数据量太大,某些代理和防火墙将阻止访问包含该数据的页面. 由于最大数目取决于所使用的防火墙和代理,因此大量的隐藏字段可能会导致零星的问题. 为避免出现此问题,如果ViewState属性中存储的数据量超过了页面的MaxPageStateFieldLength属性中指定的值,则页面会将视图状态拆分为多个隐藏字段,以将每个单独字段的大小减小为低于拒绝的大小通过防火墙.

4: 如何获取视图状态值的简单示例,最好对敏感信息进行加密.

受保护的无效Page_Load(对象发送者,EventArgs e)

{

Label1.Text =“ hello,workd”;

aspnet mvc项目里创建一个web窗体_aspnet web窗体应用程序_aspnet web窗体应用程序

}

受保护的无效Button1_Click(对象发送者,EventArgs e)

{

string viewStateString =“ / wEPDwUKMTI2NTY4ODI3MQ9kFgICAw9kFgICAQ8PFgIeBFRleHQFC2hlbGxvLHdvcmtkZGRklEAwGt + 6k9LZS1XQSMHE4AuEjqN9E8jQobspp;

byte [] stringBytes = Convert.FromBase64String(viewStateString);

string s = System.Text.Encoding.ASCII.GetString(stringBytes);

Label1.Text = s;

}

5: 查看状态程序块

<配置>

//如果视图状态超过此值,它将被分为多个块. 最大限度地减少视图状态下的信息.

6: Web表单的处理阶段

每个阶段的注意事项:

6.1: 页面框架初始化: 如果不是第一次,ASP.Net将反序列化视图状态信息并将其应用于所有控件.

6.2: 用户代码初始化: if(!Page.IsPostBack)第一个请求最好在控件标记中设置属性.

6.3: 自动数据绑定: 本质上有两个数据源操作. 因此,在所有控件事件处理之后以及Page_PreRender事件发生之前,将执行任何更改(插入,删除或更新). 然后,在触发Page_PreRender事件后,数据源控件将执行查询,并将获得的数据插入关联的控件中.

7: 动态添加页面标题

受保护的无效Page_Load(对象发送者,EventArgs e)

{

Page.Header.Title =“动态标题页”;

aspnet web窗体应用程序_aspnet web窗体应用程序_aspnet mvc项目里创建一个web窗体

//定义带有描述信息的元数据标签.

HtmlMeta metaDescription =新的HtmlMeta();

metaDescription.Name =“ description”;

metaDescription.Content =“学习.NET的绝佳网站”;

//添加它.

Page.Header.Controls.Add(metaDescription);

//定义并添加第二个元数据标签.

HtmlMeta metaKeywords =新的HtmlMeta();

metaKeywords.Name =“关键字”;

metaKeywords.Content =“ .NET,C#aspnet web窗体应用程序,ASP.NET”;

Page.Header.Controls.Add(metaKeywords);

}

8: 创建动态控件

私有无效Page_Load(对象发送者,EventArgs e)

{

//创建一个新的按钮对象.

Button newButton = new Button();

//分配一些文本和ID,以便以后检索.

newButton.Text =“ *动态按钮*”;

newButton.ID =“ newButton”;

///将事件处理程序附加到Button.Click事件. 委托的代码可以处理事件,并且必须在page_load事件处理程序中执行此操作.

newButton.Click + =新的System.EventHandler(this.Button_Click);

//将Putton添加到占位符.

PlaceHolder1.Controls.Add(newButton);

aspnet web窗体应用程序_aspnet web窗体应用程序_aspnet mvc项目里创建一个web窗体

}

受保护的无效Button_Click(对象发送者,System.EventArgs e)

{

Label1.Text =“您单击了动态按钮. ”;

}

受保护的无效cmdReset_Click(对象发送者,System.EventArgs e)

{

Label1.Text =“(无值. )”;

}

受保护的无效cmdRemove_Click(对象发送者,System.EventArgs e)

{

//搜索按钮,无论它处于什么级别.

Button foundButton =(Button)Page.FindControl(“ newButton”);

//删除按钮.

if(foundButton!= null)

{

foundButton.Parent.Controls.Remove(foundButton);

}

}

受保护的无效cmdCreate_Click(对象发送者,System.EventArgs e)

{

//(在回发中自动创建按钮. )

}

9: 页面类(属性是会话,应用程序,缓存,请求,响应,服务器,用户,跟踪)


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-149740-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 温朝刚
        温朝刚

        打不过

      • 秦宣公
        秦宣公

        我们以确认美以进我12海里就该打沉它

      热点图片
      拼命载入中...