Как программно отличить типы элементов / элементов управления от коллекции ключей / значений ASP.NET Request.Form?
У меня есть простая веб-форма ASP.NET, как показано ниже:
<form id="form1" runat="server">
<asp:TextBox ID="txt" runat="server"></asp:TextBox>
<asp:DropDownList ID="ddl" runat="server">
<asp:ListItem Text="X" Value="X"></asp:ListItem>
<asp:ListItem Text="Y" Value="Y"></asp:ListItem>
<asp:ListItem Text="Z" Value="Z"></asp:ListItem>
</asp:DropDownList>
<asp:Button ID="btn" runat="server" Text="Button" />
</form>
Request.Form содержит следующие пары ключ / значение:
[0] _VIEWSTATE
[1] _EVENTVALIDATION
[2] txt
[3] ddl
[4] btn
Как отличить кнопку (btn) от значения Textbox (txt) или от значения DropDown List (ddl)? Или мне нужно как-то придумать соглашение об именах? Я пытаюсь перебрать объект Request.Form и сохранить значения формы в хеш-таблицу для последующего использования.
Благодарю.
2 ответа
Ты не можешь Для сервера это простое имя: коллекция значений.
Почему бы не позволить фреймворку позаботиться об этом за вас?
В codebehind вы можете получить значения через их свойства:
ddl.SelectedText
txt.Text
Способ различить различные поля Request.Form - связать имена полей с именами элементов управления - это именно то, что делает каждый элемент управления.
Каждый элемент управления знает свой собственный идентификатор. На этапе инициализации каждый элемент управления устанавливает или восстанавливает свое состояние, основываясь как на Request.Form, так и на ViewState.
Для динамически создаваемых элементов управления Framework будет обрабатывать это для вас при условии, что вы создадите элементы управления и добавите их в дерево элементов управления до фазы инициализации (например, в обработчике события OnPreInit).
Если вы хотите сделать это самостоятельно, вы можете имитировать процесс, пройдясь по дереву управления.