加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 什么时候Request.Form [“name”]为null并且当一个空

发布时间:2020-12-16 03:41:38 所属栏目:asp.Net 来源:网络整理
导读:为什么以下结果都是真正的if子句,即使文本框是空的,甚至没有触及回发? : form action="Default.aspx" runat="server" method="post" id="newform"input type="text" id="name" runat="server"//form%if (Request.Form["name"] != null) // Prints out "Nam
为什么以下结果都是真正的if子句,即使文本框是空的,甚至没有触及回发? :

<form action="Default.aspx" runat="server" method="post" id="newform">
<input type="text" id="name" runat="server"/>
</form>

<%
if (Request.Form["name"] != null) // Prints out "Name OK" on postback.
{
    Response.Write("<br/>");
    Response.Write("Name OK");
}
%>

文本框实际上是否在回发中包含空字符串(“”)?

为什么以下结果导致第一页上的true if子句加载而不是回发? :

<form action="Default.aspx" runat="server" method="post" id="newform">
<input type="text" id="name" runat="server"/>
</form>

<%
if (Request.Form["name"] != "") // Prints out "Name OK" on first page load,but not on postback.
{
    Response.Write("<br/>");
    Response.Write("Name OK");
}
%>

为了获得成功和预期的结果,我必须使用以下内容:

<form action="Default.aspx" runat="server" method="post" id="newform">
<input type="text" id="name" runat="server"/>
</form>

<%
if (Request.Form["name"] != null && Request.Form["name"] != "")
{
    Response.Write("<br/>");
    Response.Write("Name OK");
}
%>

解决方法

首先,让我回答你的问题:

第一页加载是GET,回发是POST(因此名称为postback).仅当通过表单POST加载页面时,才会填充Request.Form.

>在第一页加载时,Request.Form是一个空集合.由于Request.Form是一个NameValueCollection,accessing a non-existent entry returns null.因此,Request.Form [“whatever”]在第一页加载时返回null.
>回发后,Request.Form充满了值.由于HTTP POST不知道空值,因此Request.Form [“whatever”]为存在但空的字段返回空字符串.

如果你想避免x!= null&& x!=“”pattern,使用String.IsNullOrEmpty或null coalescing operator:(x ??“”)!=“”.

另一方面,通过使用内置的WebForms功能而不是自己解析Request.Form,您可以使您的生活更轻松:

<form runat="server">
    <asp:TextBox ID="nameBox" runat="server" />
    <asp:Button Text="Do Postback" runat="server" />
</form>

<%
    if (nameBox.Text != "")
    {
        %><br />Name OK<%
    }
%>

由于TextBox.Text默认为“”,因此无需在此处检查null.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读