如何从背后的 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】:您说您正在动态创建一个表单 - 您真的是指
【讨论】:
【参考方案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:buttons?
如何访问 html5 本地存储 asp.net mvc 3 控制器/管道