ASP.NET Web Forms - HTML 表单

http://www.runoob.com/aspnet/aspnet-forms.html#

所有的服务器控件都必须出现在 标签中, 标签必须包含 runat=“server” 属性。

ASP.NET Web 表单
所有的服务器控件都必须出现在 标签中, 标签必须包含 runat=“server” 属性。

runat=“server” 属性表明该表单必须在服务器上进行处理。同时也表明了包含在它内部的控件可被服务

器脚本访问:

...HTML + server controls

注释:该表单总是被提交到自身页面。如果您指定了一个 action 属性,它会被忽略。如果您省略了

method 属性,它将会默认设置 method=“post”。同时,如果您没有指定 name 和 id 属性,它们会由

ASP.NET 自动分配。

注释:一个 .aspx 页面只能包含一个 控件

如果您在一个包含不带有 name、method、action 或 id 属性的表单的 .aspx 页面中选择查看源代码,

您会看到 ASP.NET 添加这些属性到表单上了,如下所示:

...some code

提交表单
表单通常通过点击按钮来提交。ASP.NET 中的 Button 服务器控件的格式如下:
<asp:Button id=“id” text=“label” OnClick=“sub” runat=“server” />

id 属性为按钮定义了一个唯一的名称,text 属性为按钮分配了一个标签。onClick 事件句柄规定了一

个要执行的已命名的子例程。

在下面的例子中,我们在一个 .aspx 文件中声明了一个按钮控件。一次鼠标单击就可以运行一个子例程

,可以更改该按钮上的文本。

实例

========

ASP.NET中Form表单不可以嵌套使用

https://www.jb51.net/article/73225.htm

我非常确定在ASP 中是可以有多个form 表单的,以前常常这样干的,在后台分类管理页面中,把添加和

修改放在同一个页面,这样就需要用到两个 form 表单进行提交服务器代码处理。

经过测试,在ASP.NET 也是可以一个页面有多个form 表单的,例如下面的代码:

但是,form 表单不能进行嵌套使用,例如下面的代码是错误的:

还有一点需要注意的是,ASP.NET 中,当页面中有多个form 表单时,只允许一个form 带有

runat=“server” 属性,否则产生异常。这是一些 ASP.NET 编程入门的童鞋常犯的错误!

小编认为,在 ASP.NET 的编程模式中,很少情况一个页面中出现两个或多个form 表单。所在提交到服

务器代码的功能都可以通过一个最外层的form 表单搞定,没必要搞那么多,这也算是ASP.NET 与ASP 的

不同之处吧!

========

form表单:get 和post

get是通过url传值,post是通过将表单值隐藏到http报文中不显示get通过的数据有限,post才能传递大数据量

但是post会有浏览器提示重新提交表单的问题,get则没有。

========

ASP.Net中表单POST到其他页面的方法分享

https://www.jb51.net/article/47065.htm

在ASP中,我们通常把表单提交到另外一个页面(接受数据页面)。但是在ASP.NET中,服务端表单通常

都是提交到本页面的,如果我设置

代码如下:
form1.action=“test.aspx”;

那么就会导致视图验证错误的错误,因为Asp.net安全机制引起的。我们也可以关闭这个验证,在接受页

面中(test.aspx)头部加上

代码如下:
<%@ Page EnableViewStateMac=“false” %>

但这样做不是很安全,其实asp.net 2.0 还提供了一种方式提交到其他页面,服务器按钮控件提供了一

个属性:PostBackUrl,这样写

代码如下:
button1.PostBackUrl=“test.aspx”;

这样就不会引起验证错误的问题了,又很安全。

这里顺便说一下动态修改form表单属性的方法一些方法,与上面无关系:例如修改target属性

普通页面:

代码如下:
((System.Web.UI.HtmlControls.HtmlForm)this.FindControl(“form1”)).Target = “_blank”;

或者
代码如下:
form1.Attributes[“target”] = “_blank”;

含母版页master:
代码如下:
((System.Web.UI.HtmlControls.HtmlForm)this.Master.FindControl(“form1”)).Target = “_blank”;

前台修改:
代码如下:
<asp:Button ID=“btnSubmit” runat=“server” Text=“Button”

"btnSubmit_Click"OnClientClick=“this.form.target=’_blank’” />

========

asp.net 防止用户通过后退按钮重复提交表单

https://www.jb51.net/article/20904.htm

经过一番仔细的寻寻觅觅之后,我发现仍旧无法找出真正能够完全禁用浏览器后退按钮的办法。所有这

里介绍的方法都能够在不同程度上、以不同的方式禁止用户返回前一页面,但它们都有各自的局限。

防止用户通过后退按钮重复提交表单
<%
response.Buffer=true
response.Expires=0
response.ExpiresAbsolute=now()-1
response.CacheControl=“no-cache”
%>
response.Buffer=true的意思就是指明输出页面是否被缓冲,当属性值为True时,服务器将不会向客户

端发送任何信息,直到所有程序执行完或者遇到
<% Response.Flush %>或<% Response.End %>
语句,才会释放缓冲区的信息。
Expires 属性
Expires 属性指定了在浏览器上缓冲存储的页距过期还有多少时间。如果用户在某个页过期之前又回到

此页,就会显示缓冲区中的版本
语法
Response.Expires [= number]
参数
number
距过期还有多少分钟。将此参数设置为 0 可使缓存的页立即过期。
注释
若此属性在一页上设置了多次,则使用最短的时间。
应用于
Response 对象
Response.expires=0也表示立即过期,但如果client和server不在一个时区或者client的时间早于

server上的时间,则不能立即过期。所以用负数或者用Response.ExpiresAbsolute=now()-1来表示立即

过期,response.expires=1表示在1分钟后过期。

asp中Response.ExpiresAbsolute=now()-1
在asp页面中,通常会有这样的设置。
Response.ExpiresAbsolute=now()-1‘设置过期时间的绝对值为当前时间-1,即出来后就过期了
这是因为默认情况下,浏览器将页面先载入缓存,然后才显示出来.通过上述设置,使浏览器对页面不

进行缓存,所以当用户点"后退"后,由于页面没有缓存,所以浏览器只能再次通过向服务器发出HT

TP请求来得到页面,这样就实现了限制了用户对同一网页进行多次操作。
asp中Response.Expires = -1
一般情况下,当用户请求WEB服务器时,服务器把请求回复给客户端。在客户端,浏览器把缓存作为一种

加快速度的策略,就是当请求时先检查缓存的情况,如果有就直接调缓存了,而不请求服务器了。
在WEB程序设计中,有时为了防止重复的提交或者严格的次序等,必须让用户的数据立即在使用后就过期

,当用户后退时就显示过期而不能继续使用。也算是为安全考虑的吧。
一般,response.expires写在页面的最上端,后面跟的是一个时间,就是过期的时间,0表示立即过期。

asp中对浏览器缓存的设置
Response.CacheControl = “no-cache”
设置不缓存在临时文件中.本句是指,上网时看到的图片通常在internet的

接下来我们要讨论的方法以后退按钮本身为中心,而不是浏览器缓存。这儿有一篇文章Rewiring the

Back Button很值得参考。不过我注意到,如果使用这种方法,虽然用户点击一下后退按钮时他不会看到

以前输入数据的页面,但只要点击两次就可以,这可不是我们希望的

效果,因为很多时候,固执的用户总是能够找到绕过预防措施的办法。
  另外一种禁用后退按钮的办法是用客户端javascript打开一个没有工具条的窗口,这使得用户很难

返回前一页面,但不是不可能。一种更安全但相当恼人的方法是,当表单提交时打开一个新的窗口,与

此同时关闭表单所在的窗口。但我觉得这种方法不值得认真考虑,因为我
们总不能让用户每提交一个表单就打开一个新窗口。
  那么,在那个我们不想让用户返回的页面是否也可以加入javascript代码呢?在这个页面中加入的

javascript代码可用来产生点击前进按钮的效果,这样也就抵消了用户点击后退按钮所产生的动作。用

于实现该功能的javascript代码如下所示:

同样地,这种方法虽然有效,但距离“最好的方法”还差得很远。后来我又看到有人建议用

location.replace从一个页面转到另一个页面。这种方法的原理是,用新页面的URL替换当前的历史纪录

,这样浏览历史记录中就只有一个页面,后退按钮永远不会变为可用。我想这可能正是许多人所寻求的

方法,但这种方法仍旧不是任何情况下的最好方法。使用这种方法的实例如下所示:
<A HREF=“PageName.htm” "javascript:location.replace(this.href);

event.returnvalue=false; ">
禁止后退到本页面的链接
   试试下面这个链接:
   禁止后退到本页面的链接!
  这种方法的缺点在于:简单地运用Response.Redirect将不再有效,这是因为每次用户从一个页面转

到另一个页面,我们都必须用客户端代码清除 location.history。另外还要注意,这种方法清除的是最

后一个访问历史记录,而不是全部的访问记录。
  点击上面的链接,你将打开一个简单的HTML页面。再点击后退按钮,你可以看到这时打开的不是本

页面,而是本页面之前的页面!(当然,你必须在浏览器中启用了客户端javascript代码。)

经过一番仔细的寻寻觅觅之后,我发现仍旧无法找出真正能够完全禁用浏览器后退按钮的办法。所

有这里介绍的方法都能够在不同程度上、以不同的方式禁止用户返回前一页面,但它们都有各自的局限

。由于不存在能够完全禁用后退按钮的方法,所以最好的方案应该是:混合运用客户端脚本和服务器端

脚本。

https://www.jb51.net/Special/494.htm
asp.net 表单操作专题

asp.net 表单总结相关推荐

  1. C# 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie

    由于种种原因,我们有时需要从互联网上抓取一些资料,有些页面可以直接打开,而有些页面必登录之后才能打开.本文介绍的是使用 HttpWebRequest 和 HttpWebResponse 自动填写提交 ...

  2. 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  3. [保存]C# 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie

    由于种种原因,我们有时需要从互联网上抓取一些资料,有些页面可以直接打开,而有些页面必登录之后才能打开.本文介绍的是使用 HttpWebRequest 和 HttpWebResponse 自动填写提交 ...

  4. asp.net表单提交方法:GET\POST介绍

    表单form的提交有两种方式,一种是get的方法,一种是post 的方法,如果没有特殊指定,默认为post.看下面代码,理解ASP.NET Get和Post两种提交的区别: 1.< form i ...

  5. asp.net表单提交方法GET\POST

    今天早晨看到一篇总结GET/POST的文章,转载一下.其实这个是面试时候常见的问题. 表单form的数据提交二种方式 <form id="form1" method =&qu ...

  6. 【转】ASP.NET 表单验证实现浅析

    对于Web应用的表单身份验证,因为公司有一个类库,采用 Session 实现,所以一直都没有去仔细了解.其实我并不赞成在 .NET 中用 Session 实现身份验证,毕竟 .NET 提供了一个强大的 ...

  7. asp html表单没有csrf保护,ASP.NET MVC 和网页中的 XSRF/CSRF 防护

    ASP.NET MVC 和网页中的 XSRF/CSRF 防护 03/14/2013 本文内容 跨站点请求伪造(也称为 XSRF 或 CSRF)是一种针对 Web 托管型应用程序的攻击,恶意网站凭此可以 ...

  8. 表单元素盘点第二弹<form><textarea>元素详细介绍

    博主有话说:如果有描述错误之处请大家纠正.让我们可以一起学习一起进步. 个人主页:GUIDM主页 内容专栏:干货 此块内容为纯纯的干货,略显乏味枯燥,是笔记向的blog.如果觉得还不错,希望你可以一键 ...

  9. jquery ajax提交 jquery post提交表单 更新页面

    jquery配合.net提交表单,在工作中可能会用到. 比如在表单一中输入id,在表单二中直接显示出来名字. 下面我们就来看看它的工作流程. 前台内容 第一,首先要引用jquery不用多说. 第二,写 ...

最新文章

  1. CA ARCserve Backup系列(3)—安装代理(Linux篇)
  2. 如何找出错误ora-07445发生时系统执行的语句
  3. Pandas数据排序,人人都能学会的几种方法
  4. pandas常见错误类型TypeError: bad operand type for unary ~: 'float'
  5. 洛谷P4727:图的同构计数(Polya引理)(dfs)
  6. 解决firefox字体发虚的问题
  7. html5hover鼠标悬停,不使用hover外部CSS样式实现hover鼠标悬停改变样式
  8. Linux centos7安装RabbitMQ3.8.9
  9. 服装CAD软件测试初学者,CAD服装打版基础教程
  10. 自制游戏手柄joystick stm32 hal usb协议
  11. hp打印机没有右键扫描_win7右键点击打印机图标没有扫描选项怎么解决
  12. IOS逆向学习之路之iPod touch4 越狱心得
  13. 电脑感叹号,电脑网络出现感叹号怎么解决?Win7系统网络出现感叹号的解决方法...
  14. Pycharm:解决点击重运行(Rerun)没有反应
  15. 怎么下载老版本android,剪映旧版下载
  16. 分布式系统(微服务架构)的一致性和幂等性和相关概念解析
  17. 鼠标侧键设置工具X-Mouse安装教程
  18. 东方甄选爆火背后的流量密码
  19. abbplc型号_西门子 abb plc有哪些型号
  20. CAD中导入.pat文件

热门文章

  1. 安卓桌面精灵_小米MIUI安卓Q来啦,超多黑科技!凭啥红米先尝鲜?内附预览图...
  2. DATE_FORMAT() 函数||DATE_SUB() 函数
  3. springboot 启动分析【难点】——如何自动扫描 @SpringBootApplication||如何加载自动配置类 @EnableAutoConfiguration||如何加载前端控制器
  4. mybatis执行查询的所有分析和创建代理对象的分析
  5. Matab 读取修改 XML
  6. Python+opencv 机器视觉 - 基于霍夫圈变换算法检测图像中的圆形实例演示
  7. Python 库升级问题-module ‘requests.exceptions‘ has no attribute ‘ReadTimeout‘原因及解决办法
  8. 从fig文件中读取数据
  9. 在ubuntu 中如何保存及播放DVD
  10. 第10周项目实践 线索二叉树的建立及遍历