如何从背后的 ASP.NET 代码访问 HTML 表单输入 [关闭]

Posted

技术标签:

【中文标题】如何从背后的 ASP.NET 代码访问 HTML 表单输入 [关闭]【英文标题】:How to access HTML form input from ASP.NET code behind 【发布时间】:2010-09-28 04:44:28 【问题描述】:

我有一个基本的 html 表单,它根据数据库中存在的记录数插入到服务器端 div 标记中。这个 HTML 表单很好,一切看起来都很好。但是在我的操作页面上,我似乎无法从后面的代码中访问输入元素。我曾尝试使用 Request 范围,但我对这种方法一无所知。还有其他建议吗?

以下所有建议都很棒,通常我会这样做。但是这些表单是在页面编译后即时构建的,所以runat='server' 没有为我做任何事情。它只是将它传递给 HTML 页面。

【问题讨论】:

【参考方案1】:

通常应该使用Request.Form["elementName"] 完成。

例如,如果您有<input type="text" name="email" />,那么您可以使用Request.Form["email"] 来访问它的值。

【讨论】:

【参考方案2】:

您说您正在动态创建一个表单 - 您真的是指

及其内容吗,因为 ASP.NET 对页面上的多个表单存在问题,并且它已经为您创建了一个 überform?

【讨论】:

【参考方案3】:

IMO 最简单的方法是在所有元素上包含 ID 和 runat 服务器标签:

<div id="MYDIV" runat="server" />

由于这些听起来像是动态插入的控件,您可能会喜欢 FindControl()。

【讨论】:

好主意,但听起来他正在插入纯 HTML;不是动态控件,所以 runat 属性永远不会被处理 这就是我的问题的症结所在,runat 属性永远不会被编译,所以我无法正确访问它们。【参考方案4】:

我猜你需要将这些输入元素设置为 runat="server"

所以你将无法访问控件

<input type="text" name="email" id="myTextBox" />

但你可以使用

<input type="text" name="email" id="myTextBox" runat="server" />

并通过使用从中读取

string myStringFromTheInput = myTextBox.Value;

【讨论】:

当我这样做时我得到control not found in current context...【参考方案5】:

由于您使用的是 ASP.NET 代码隐藏,请为元素添加一个 id 和 runat=server

然后您可以在后面的代码中引用对象。

【讨论】:

【参考方案6】:

如果您访问的是纯 HTML 表单,则必须通过提交按钮(或通过 javascript 帖子)将其提交到服务器。这通常意味着您的表单定义将如下所示(我快记不住了 - 请确保您检查 HTML 元素是否正确):

<form method="POST" action="page.aspx">

    <input id="customerName" name="customerName" type="Text" />
    <input id="customerPhone" name="customerPhone" type="Text" />
    <input value="Save" type="Submit" />

</form>

您应该能够像这样访问 customerName 和 customerPhone 数据:

string n = String.Format("0", Request.Form["customerName"]);

如果您在表单中有method="GET"(不推荐 - 它会弄乱您的 URL 空间),您将不得不像这样访问表单数据:

string n = String.Format("0", Request.QueryString["customerName"]);

这当然只有在表单“已发布”、“已提交”或通过“回发”完成(即有人单击“保存”按钮或通过 JavaScript 以编程方式完成)的情况下才有效。

另外,请记住,只有在您不使用服务器控件(即runat="server")时才能以这种方式访问​​这些元素。使用服务器控件,id 和 name 是不同的。

【讨论】:

这正是问题所在,我缺少 method=post 属性。非常感谢。 谢谢,最近一直在找。 是否也可以通过 Request 为这些控件分配值?我在尝试这样做时遇到了一个集合是只读错误。 我只使用了Id,您需要输入名称,否则它不起作用。感谢您的帮助! 您需要使用双引号,即“customerName”。单引号不起作用。

以上是关于如何从背后的 ASP.NET 代码访问 HTML 表单输入 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在asp.net中更改实现背后的代码

如何在 ASP.NET 中组织数据访问层 (DAL)

如何从后面的代码中隐藏和显示 asp.net 中的 asp:buttons?

如何访问 html5 本地存储 asp.net mvc 3 控制器/管道

如何将 Dictionary<string, string> 变量从后面的代码传递到 asp.net?

如何从 Asp.Net Code Behind 调用 JavaScript 函数?