Как программно отличить типы элементов / элементов управления от коллекции ключей / значений ASP.NET Request.Form? - PullRequest
2 голосов
/ 21 декабря 2009

У меня есть простая веб-форма 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 ]

2 голосов
/ 21 декабря 2009

Способ провести различие между различными полями Request.Form - связать имена полей с именами элементов управления - это именно то, что делает каждый элемент управления.

Каждый элемент управления знает свой собственный идентификатор. На этапе инициализации каждый элемент управления устанавливает или восстанавливает свое состояние, основываясь как на Request.Form, так и на ViewState.

Для динамически создаваемых элементов управления Framework будет обрабатывать это для вас при условии, что вы создадите элементы управления и добавите их в дерево элементов управления до фазы Init (например, в обработчике события OnPreInit).

Если вы хотите сделать это самостоятельно, вы можете имитировать процесс, пройдясь по дереву управления.

1 голос
/ 21 декабря 2009

Вы не можете. Для сервера это простое имя: коллекция значений.

Почему бы не позволить фреймворку позаботиться об этом за вас?

В коде позади вы можете получить значения через их свойства:

ddl.SelectedText
txt.Text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...