Как обработать передачу данных из постбэка в событие preinit?
Представьте себе сценарий, в котором у меня есть две формы: первая - статическая, а вторая - динамическая. Эти формы предназначены для предварительной регистрации студентов.
Форма Form1 проверяет, существует ли студент с идентификатором (национальной идентичностью) или нет. Если "существует", это покажет процесс регистрации (что-то вроде, в ожидании, принято, такие вещи). Если "не существует", это означает, что вторая форма должна быть видимой для заполнения студентом. Вторая форма полностью динамична. Все поля и т. Д. Динамически создаются в PreInit.
В дополнение к StudentID, я должен также передать FormID. FormID очень важен, потому что есть и другие формы, а также динамическая форма будет создана на основе этого.
Моя проблема заключается в том, как перевести StudentID (txtStudentID.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
}
1 ответ
Init-fase - инициализировать вашу страницу. PreInit-fase находится перед Init-fase, и во время PreInit многие вещи не инициализируются, как ваша MasterPage и ваш Context. Мой совет: используйте PreInit редко.
В любом случае вы сможете использовать HttpContext.Current.Request.Form.
Эта часть запроса содержит все данные, которые отправляются с клиента на сервер. В нем есть коллекция под названием "Форма" со всеми данными из веб-формы, введенными пользователем.
Эти данные предназначены для заполнения всех ваших элементов управления на вашей странице, но заполнение этих элементов управления происходит ПОСЛЕ инициализации вашей страницы, zO ПОСЛЕ OnInit.
На этом этапе жизненного цикла вашей страницы вы можете получить доступ к значениям формы только из этой коллекции форм, например:
string studentID = HttpContxt.Current.Request.Form["txtStudentID"];
Есть одна ловушка. Некоторые элементы страницы, такие как MasterPage, могут модифицировать идентификаторы внутри него. У них есть собственный идентификатор перед идентификатором внутреннего контроля. Таким образом, идентификатор "txtStudentID" мог бы стать: "ctl00$contents$txtStudentID". (Это означает, что есть внешний элемент управления с идентификатором "ctl00", там элемент управления с именем "содержимое" и там элемент управления "txtStudentID".