【问题标题】:How can I retrieve the values of controls in the form that posted?如何在发布的表单中检索控件的值?
【发布时间】:2010-05-13 07:47:53
【问题描述】:

我知道这一定是关于 ASP.Net 的最简单的问题,但我很困惑。我有一个表单,我的访问者将在其中输入姓名、地址等。然后我通过提交按钮的 PostBackUrl 属性将该表单发布到另一个页面,其中的字段应该全部重新形成新的隐藏字段,然后再次发布到 Paypal。

我的问题是我无法获取访问者在原始页面中输入的值。每当我输入“runat='server'”时,ASP.Net 都会完全改变控件的 ID,从而无法弄清楚如何访问。在 POSTed 表单中,我尝试了Request.Form["_txtFirstName"],结果显示为空。然后我尝试了((TextBox)PreviousPage.FindControl("_txtFirstName")).Text,结果也是空的。我已经尝试过这些变化。我无法弄清楚我应该如何使用这些控件。为什么这东西要这么难?

【问题讨论】:

    标签: asp.net findcontrol request.form


    【解决方案1】:

    您在使用 MasterPages 吗?如果是这样,您必须在内容占位符内搜索控件:

    ContentPlaceHolder placeholder = (ContentPlaceHolder)Page.PreviousPage.Master.FindControl("ContentPlaceHolder1");
    
    TextBox previousPageTextBox = (TextBox)placeholder.FindControl("TextBox1");
    

    【讨论】:

    • 哇,这确实是问题所在。什么样的恶梦。感谢 patmortech!
    【解决方案2】:

    第一页上的 TextBox 控件的名称是什么?不使用clientId,使用调用FindControl时声明的ID,所以如果调用ID="TextBox1",使用下面的代码查找。

    您的第二种方法看起来不错,只是您错过了 Page.PreviousPage。但这不应该影响结果。你开启追踪了吗?

    这是文档中的标准语法,放置在您的目标页面中...

    if (Page.PreviousPage != null)
    {
        TextBox SourceTextBox = 
            (TextBox)Page.PreviousPage.FindControl("TextBox1");
        if (SourceTextBox != null)
        {
            Label1.Text = SourceTextBox.Text;
        }
    }
    

    【讨论】:

    • 另外,请参阅 patmortech 关于母版页的回答
    • 那么控制ID是服务器端的_txtFirstName。但是,当我进入下一页时,执行 Request.Form("_txtFirstName") 会产生空结果。查看其中的控件数组会发现我的控件现在是 ctl00$_contentPlaceHolder1$_txtFirstName,显然无法识别。我认为通过使用 POST,使 Request.Form() 可用可以解决我的问题(在我完成 Response.Redirect 并且没有 Request.Form 内容之前)。没想到看到所有的ID都变了。 PreviousPage 结束工作(见下面的答案)但是我们在 2.0 之前做了什么??
    【解决方案3】:

    在 ASP.NET 中,如果控件是服务器端控件,您只需通过编码时给它的 ID 调用它,而不是渲染的。

    标记:

    <input type="text" id="myId" runat="server" />
    

    后面的代码:

    string controlValue = myId.Value;
    

    【讨论】:

      猜你喜欢
      • 2012-01-15
      • 2014-08-27
      • 2017-11-20
      • 2010-09-30
      • 2021-01-29
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多