0

想象一个场景,其中我有两种形式,第一种是静态的,第二种是动态的。这些表格适用于学生预注册过程。

Form1 检查是否存在具有 ID(国民身份)的学生。如果“存在”,它将显示注册过程(例如,待处理、已接受等)。如果“不存在”,则表示第二个表格应该可见以供学生填写。第二种形式是完全动态的。所有字段等都是在 PreInit 中动态创建的。

除了 StudentID,我还必须传递一个 FormID。FormID 非常重要,因为还有其他的表单,动态表单也会基于它生成。

我的问题是如何将 StudentID (txtStudentID.Text) 传输到动态表单。我尝试了很多场景,但它们都不能正常工作,比如 ajax 面板、page1 和 page2 等。

如果您能给我一个实用的解决方案,我将不胜感激。

表格一:

//Request.QueryString["FormID"];
<asp:TextBox ID="txtStudentID" runat="server"></asp:TextBox><br />
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />

表格 2:

protected override void OnPreInit(EventArgs e)
{
        base.OnPreInit(e);
        CreateDynamicForm(StudentID);
    }
}
protected void CreateDynamicForm(Guid StudentID)
{
    //  codes for generating the dynamic form, based on the StudentID submited form Form1, and FormID
}
4

1 回答 1

1

Init-fase 用于初始化您的页面。PreInit-fase 在 Init-fase 之前,并且在 PreInit 期间很多东西都没有被初始化,比如你的 MasterPage 和你的 Context。我的建议:很少使用 PreInit。

无论哪种情况,您都应该能够使用 HttpContext.Current.Request.Form。

此请求部分包含从客户端发送到服务器的所有数据。其中有一个名为“Form”的集合,其中包含用户输入的来自网络表单的所有数据。

此数据旨在用于填充页面上的所有控件,但填充这些控件发生在页面初始化之后,即在 OnInit 之后。

在页面生命周期的这一点上,您只能通过此 Form-collection 访问表单值,例如:

string studentID = HttpContxt.Current.Request.Form["txtStudentID"];

有一个陷阱。一些页面元素,如 MasterPage,可以修改其中的 ID。它们在内部控件的 ID 之前有自己的 ID。所以 ID“txtStudentID”可能变成:“ctl00$contents$txtStudentID”。(这意味着有一个 ID 为“ctl00”的外部控件,其中有一个名称为“contents”的控件,其中有一个控件“txtStudentID”。

于 2013-04-25T06:24:45.830 回答