想象一下我有两种形式的场景,第一种是静态,第二种是动态的。 这些表格适用于学生预先登记过程。
Form1检查是否存在具有ID(国家身份)的学生。如果存在'它将显示注册过程(类似,待定,接受,这样的东西)。如果'不存在',则表示第二个表单应该是可见的,以便学生填写。第二种形式是完全动态的。所有字段等都在PreInit中动态创建。
除了StudentID,我还必须传递一个FormID。 FormID非常重要,因为还有其他形式,也会根据它生成动态表单。
我的问题是如何将StudentID(txtStudentID.Text)传输到动态表单。 我尝试了很多场景,但它们无法正常工作,例如ajax面板,page1&第2页等。
如果你给我一个切实可行的解决方案,我将非常感激。
表格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
}
答案 0 :(得分:1)
Init-fase用于初始化您的页面。 PreInit-fase在Init-fase之前,在PreInit期间,很多东西都没有初始化,比如MasterPage和Context。我的建议:很少使用PreInit。
在任何一种情况下,你都可以使用HttpContext.Current.Request.Form。
此Request-part包含从客户端发送到服务器的所有数据。在一个名为“Form”的集合中,包含来自webform的所有数据,由用户输入。
此数据用于填充您网页上的所有控件,但填充这些控件时会在您的网页初始化后进行,点击暂停。
在页面生命周期的这一点上,您只能通过此表单集合访问表单值,如:
string studentID = HttpContxt.Current.Request.Form["txtStudentID"];
有一个坑洼。某些页面元素(如MasterPage)可以修改其中的ID。它们在内部控件的ID之前有自己的ID。所以ID“txtStudentID”可能变成:“ctl00 $ contents $ txtStudentID”。 (这意味着有一个ID为“ctl00”的外部控件,其中有一个名为“contents”的控件,其中有控件“txtStudentID”。