2

我有一个简单的 ASP.NET Web 表单,如下所示:

<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) 与文本框值 (txt) 或下拉列表值 (ddl)?还是我需要想出一个命名约定?我正在尝试迭代 Request.Form 对象并将表单值保存到哈希表中以供以后使用。

谢谢。

4

2 回答 2

2

区分各种 Request.Form 字段的方法是将字段名称与控件名称相关联——这正是每个控件所做的。

每个控件都知道自己的 ID。在初始化阶段,每个控件都根据 Request.Form 和 ViewState 设置或恢复其状态。

对于动态创建的控件,框架将为您处理此问题,前提是您在 Init 阶段之前创建控件并将它们添加到控件树中(例如在 OnPreInit 事件处理程序中)。

如果你想自己做,你可以通过遍历控制树来模拟这个过程。

于 2009-12-21T03:55:10.277 回答
1

你不能。对于服务器来说,它是一个简单的 name:value 集合。

为什么不让框架为您解决这个问题?

在代码隐藏中,您可以通过它们的属性检索值:

ddl.SelectedText
txt.Text
于 2009-12-21T00:49:29.850 回答