asp.net - 如何以编程方式区分 ASP.NET Request.Form 键/值集合中的元素/控件类型?

标签 asp.net post webforms request-object

我有一个简单的 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 对象并将表单值保存到哈希表中以供以后使用。

谢谢。

最佳答案

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

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

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

如果您想自己做,可以通过遍历控制树来模仿该过程。

关于asp.net - 如何以编程方式区分 ASP.NET Request.Form 键/值集合中的元素/控件类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1937658/

相关文章:

c# - FindByName 或 FindByValue set .selected on dropdownlist 返回错误 对象引用未设置到对象的实例

c# - 可以根据 Windows 用户名自动登录 Forms 身份验证的 MVC 应用程序吗?

javascript - 提交表单后,从帖子数组中动态附加的表行字段获取值有什么问题?

javascript - 反序列化表单值

javascript - javascript textarea POST换行MySQL

java - 如何获取 AutoCompleteField 中选定的文本并通过帖子将其发送到服务器

c# - 在哪里设置变量,以便它们在回发时不为空?

javascript运行时错误无法获取未定义或null的属性 'value'

c# - iTextSharp 一切正常,但在打开 pdf 文档时出现奇怪的错误

c# - 连接到sql server,问题