1

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

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

4

3 回答 3

0

第一页上的 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;
    }
}
于 2010-05-13T07:58:56.230 回答
0

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

标记:

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

后面的代码:

string controlValue = myId.Value;
于 2010-05-13T07:59:57.033 回答
0

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

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

TextBox previousPageTextBox = (TextBox)placeholder.FindControl("TextBox1");
于 2010-05-13T08:08:17.193 回答