Post与Get提交小结

狭义讲,这两种方式的区别就是:以何种方式"携带"数据.
get提交,通过url后跟一对或多对键|值的方式传递给请求的页面.
post提交,通过将数据夹带在body区域传递给请求的页面.

表单提交方式(HttpMethod)分为"Get"和"Post".
设置为Get方式,在所请求的url后面附加一串键|值,在服务器端代码可以通过Request.QueryString[]访问.
设置为Post方式,则在服务器端代码可以通过Request.Form[]访问.
直接在IE地址栏中敲url,如http://localhost:9966/WebForm2.aspx"或"http://localhost:9966/WebForm2.aspx?lll=2" 均属于Get方式访问.

注意,Get是Form的默认方法,Get提交字符数量有限,就是因为url长度的限制,2048字节(2KB).

下面的例子演示如何将数据从一个页面提交至另一个页面

[请求页面]

<%@ Page Language="C#" AutoEventWireup="true" Codebehind="WebForm1.aspx.cs" 

Inherits="WebDiary.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>无标题页</title>

    <script type="text/javascript"> 
    function RegisterAccount() 
    { 
        if (!document.getElementById('agree').checked) 
        { 
            alert('You can register after you agree with terms!'); 
            window.event.returnValue=false; 
            return false; 
        } 
        else if(document.getElementById('agree').checked) 
        {             
            document.forms('register_member_form').submit(); 
        } 
        else 
        { 
            alert('Unknown Error!'); 
        } 
    } 
    </script>
</head>
<body ms_positioning="GridLayout">
    <form id="register_member_form" method="post" action="WebForm2.aspx" target="_blank">
        <input type="text" name="text" value="text_value">
        <input type="checkbox" id="agree" name="checkbox" value="checkbox_value">
        <input type="hidden" name="hidden"  value="hidden_value"/>
        <input type="image" name="image" value="image_value" />
        <input type="reset" name="reset"  value="reset_value"/>
        <input type="submit" name="sub" value="submit_value" />
        <input type="radio" name="radio" checked/>
        <input type="password" name="password" value="password_value"/>
        <input type="file" name="file" value="file_value"/>
        <input type="button" name="button" class="formSubmit" value="submit" 
onclick="RegisterAccount()" />
    </form>
</body>

--后台代码WebForm1.aspx.cs为默认.

[接收页面]

namespace WebDiary
{
    public partial class WebForm2 : System.Web.UI.Page
    {
        private static int i = 0;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                i++;
                Response.Write(i.ToString());
            } 
        }
    }
}

--前台页面WebForm2.aspx为默认.


注意,在WebForm1.aspx中必须指定<input type="checkbox" id="agree" name="checkbox" value="checkbox_value">中的name属性,仅有id不行,否则在WebForm2.aspx.cs后台代码中Request.querystring[](对应get) 或 Request.Form[](对应post)无法访问.

    同为input元素,只有type为file、text、radio、checkbox、hidden、password的能读出键值,而submit、

button、Reset、image无法读出键值。并且radio和checkbox必须为checked才可以读出键值.

   补充,submit的name若等于"submit"无法提交表单,所以上例设为了"sub"(原因不清楚).

Post与Get提交小结_第1张图片

你可能感兴趣的:(get提交,post)