• ASP.NET进阶(1):form是什么?


    form是什么?

    <form>标签是HTML里最重要的标签之一,是我们最常用的标签之一。但是,我想说,在很多初级.net程序员脑海里,他就是一个承载控件的母体,至于他的作用是什么可能都不清楚。form是一个表单,用来向服务器post数据。传统的web开发(没有控件概念的开发),form标签的写法是<form id="form1" action="" method="post">...</form>(可以看asp.net生成的html源代码)
    Id我们知道,那Action是什么?Method是什么呢?

    get和post

    Action是form要提交到哪个地址(请求发送到哪个页),Method是提交(页面请求)的方式(get or post)。“提交”其实也是页面请求,只是有的会发送数据,有的不会。
    ASP.NET生成的html代码你会看到action是自己?这是什么意思?
    实际上是当用户点击提交按钮后,又再一次请求自己这个的页面,并且处理了提交数据,具体的处理过程我会在后面的章节中一一道来。

    我们知道,http协议里有Get和Post两种请求(另外还有put和delete,这里不讨论)。顾名思义,get是“获取”,post是“发送”——即向服务器提交数据。服务器通过Action指定的页面来处理post过来的数据(Request.Form["InputName"]获取具体控件值)。

    这样又有新问题,form的method可以设置为get吗?他们有什么区别? 
    method是可以设置为get的。但是get访问URL的方式并不是向服务器发送数据,只负责获取。
    所以如果我们要把表单的数据向服务端发送,只能把数据放在网址里的参数里,服务端可以通过Request.QueryString["InputName"]来得到控件的值。
    但是,url的长度毕竟有限,而且是明文,所以get的方式不能提交大数据和隐私数据。而post显然没这个限制,适合大量数据提交。

    submit

     submit即是“提交”的意思。
    但是为什么ASP.NET里却没有submit控件呢?只有<asp:button/>。实际上查看网页源代码就可以发现WebForm已经帮我们“做”了一个提交按钮,只是我们跟他不熟。
    提交按钮的标签是<input type="submit"/>,但ASP.NET的button生成的则是<input type="button">。button是不能触发表单提交的,只有通过submit才能触发form的提交。 
    注意我加了个新的词汇,form的提交! 是的,form是什么? 怎么又变成它的提交了,不是按钮吗?
    在浏览器里,所有的html节点和js变量都是window的prototype(参照Javascript权威指南第五版的说法)。
    form1(form的id)这个form是一个dom实例。他有自己的成员、事件、方法(详细请看http://www.w3school.com.cn/htmldom/dom_obj_form.asp),其中有个方法就是submit()!
    ASP.NET虽然没有用submit,但他用javascript写了一个小方法来调用form的submit方法一样可以实现表单的提交。
    所以我们在平时开发网页时,也可以实现自己来调用form的submit,当然,我们可以在提交之前做一些处理(比如验证填写情况)。


    代码实例:

    <html>
    <head>
    <script type="text/javascript">
    function formSubmit()
    {
    document.getElementById(
    "myForm").submit()
    }
    </script>
    </head>

    <body>

    <form id="myForm" action="js_form_action.asp" method="get">
    Firstname:
    <input type="text" name="firstname" size="20"><br />
    Lastname:
    <input type="text" name="lastname" size="20"><br />
    <br />
    <input type="button" onclick="formSubmit()" value="Submit">
    </form>
    </body>

    </html>
  • 相关阅读:
    Codeforces Round #564 (Div. 1)
    Codeforces Round #569 (Div. 1)
    SDOI2019R2游记
    BZOJ 3555: [Ctsc2014]企鹅QQ
    SDOI2019R1游记
    计数的一些东西
    多项式的各种操作
    BZOJ 5424: 烧桥计划
    Codeforces Round #545 (Div. 1)
    概率期望学习笔记
  • 原文地址:https://www.cnblogs.com/mad/p/1819028.html
Copyright © 2020-2023  润新知