首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >返回空Request.Form的简单HTTP

返回空Request.Form的简单HTTP
EN

Stack Overflow用户
提问于 2015-03-04 22:04:45
回答 3查看 4.2K关注 0票数 2

我正在尝试一个简单的HTTP,在asp.net中将数据从一种形式发布到另一种形式。发件人页代码

代码语言:javascript
代码运行次数:0
运行
复制
 <form id="form1" runat="server" method="post" action="CILandingPage.aspx">
<asp:TextBox name="txtUname" runat="server" Width="180px"></asp:TextBox>
<asp:TextBox name="txtPassword" runat="server" TextMode="Password" Width="180px"></asp:TextBox>
 <asp:TextBox name="txtTransaction" runat="server" Width="180px"></asp:TextBox>

而接收方页面有代码

代码语言:javascript
代码运行次数:0
运行
复制
        lblUserName.Text = Request.Form["txtUname"].ToString();
        lblPassword.Text = Request.Form["txtPassword"].ToString();
        lblTransactionID.Text = Request.Form["txtPassword"].ToString();

它抛出NullReferenceException,因为Request.Form对象是空的。

我遗漏了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-05 01:26:18

设置要将Web页张贴到的页面的PostBackUrl 属性为指向URL的控件。

删除action,将 PostBackUrl添加到Button.Instead name 中,使用 ID属性值。

In Default.aspx

代码语言:javascript
代码运行次数:0
运行
复制
<form id="form1" runat="server" method="post">
<div>       
    <asp:TextBox ID="TextBox1" name="txtUname" runat="server" Width="180px"></asp:TextBox>
    <asp:TextBox ID="TextBox2" name="txtPassword" runat="server" TextMode="Password" Width="180px"></asp:TextBox>
    <asp:TextBox ID="TextBox3" name="txtTransaction" runat="server" Width="180px"></asp:TextBox>
    <asp:Button ID="button" PostBackUrl="~/CILandingPage.aspx" runat="server" />           
</div>
</form>

In CILAndinaPage.aspx.cs

代码语言:javascript
代码运行次数:0
运行
复制
using System;

public partial class CILandingPage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Response.Write(Request.Form["TextBox1"].ToString() +Environment.NewLine);
            Response.Write(Request.Form["TextBox2"].ToString() + Environment.NewLine);
            Response.Write(Request.Form["TextBox3"].ToString());            
        }
    }
}
票数 2
EN

Stack Overflow用户

发布于 2015-03-05 08:55:17

您可以使用PreviousPage引用如下:

代码语言:javascript
代码运行次数:0
运行
复制
protected void Page_Load(object sender, EventArgs e)  
{  
// first check if we had a cross page postback  
    if ( (PreviousPage != null) && (PreviousPage.IsCrossPagePostBack))  
    {  
        Page previousPage = PreviousPage;
        TextBox UserName= (TextBox)previousPage.FindControl("txtUname");
        TextBox Password= (TextBox)previousPage.FindControl("txtPassword");
        // we can now use the values from TextBoxes and display them in two Label controls..
        lblUserName.Text = UserName.Text;
        blPassword.Text = Password.Text;
    }  
}  

Page_Load中的这段代码将被引用到发布数据的上一页&帮助您在目标页面上获得相同的信息。

希望这能帮上忙!

票数 1
EN

Stack Overflow用户

发布于 2015-03-05 01:14:22

由于您是跨页投递,很可能不存在集合项(txtPassword)。您可以尝试将每个控件的ClientIdMode设置为静态,以便HTTP中使用的id与您在目标页面上的.Form集合中查找的id匹配。

查看这篇文章,了解更多关于跨页张贴的信息:https://msdn.microsoft.com/en-us/library/ms178139%28v=vs.140%29.aspx

使用浏览器调试工具(F12)查看HTTP正文中传输的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28865939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档