如何处理从回发到preinit事件的传输数据

本文关键字:preinit 事件 数据 传输 何处理 处理 | 更新日期: 2023-09-27 18:10:44

想象这样一个场景:我有两个表单,第一个是静态的,第二个是动态的。这些表格用于学生预注册过程。

Form1检查学生是否有身份证(National Identity)。如果'exists',它会显示注册的过程(比如,pending, accepted等)。如果"不存在",这意味着第二张表格应该是可见的,让学生填写。第二种形式是完全动态的。所有字段等都是在PreInit中动态创建的。

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

我的问题是如何转移学生entid (txtstudententid . text)的动态形式。我已经尝试了许多场景,但它们不能正常工作,如ajax面板,page1 &所以page2等。

如果你能给我一个切实可行的解决方案,我将不胜感激。

形式1:

//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
}

如何处理从回发到preinit事件的传输数据

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

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

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

这个数据是用来填充你的页面上的所有控件,但是填充这些控件发生在你的页面初始化之后,而不是OnInit之后。

在页面生命周期的这一点上,您只能通过以下表单集合访问表单值:

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

有一个陷阱。一些页面元素,比如MasterPage,可以修改其中的ID。他们在内部控制的ID之前有自己的ID。因此,ID"txtstudententid"可以变成:"ctl00$contents$ txtstudententid"。(这意味着有一个ID为"ctl00"的外部控件,在那里有一个名称为"contents"的控件,在那里有一个控件"txtstudententid"。