2008-12-23 55 views
29

我有一个基本的HTML表单,根据数据库中存在多少记录插入到服务器端div标记中。这个HTML表格出来就很好,而且一切都很好。但在我的操作页面上,我似乎无法从后面的代码中访问输入元素。我尝试过使用Request范围,但在这种方法上已经空了。还有其他建议吗?如何从后面的asp.net代码访问HTML表单输入

以下所有建议都很棒,通常我会这么做。但是这些表单是在页面编译完成后立即构建的,所以runat ='server'对我没有任何帮助。它只是将它传递给html页面。

回答

57

如果您正在访问纯HTML表单,它必须通过提交按钮(或通过javascript post)提交给服务器。这通常意味着你的表单定义看起来就像这样(我会关闭内存,请务必检查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> 

您应该能够访问客户名称和customerPhone数据,如这样的:

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

如果你在表单method="GET"(不推荐,它搅乱了你的URL空间),你将不得不像这样访问表单数据:

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

这当然只有在表单被“发布”,“提交”或通过“回传”完成时才能起作用。 (即有人点击了“保存”按钮,或通过javascript以编程方式完成)。

另外,请记住,只有当您不使用服务器控件(例如runat="server")才能以这种方式访问​​这些元素, ,与服务器控件的ID和名称是不同的。

9

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

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

-1

编辑:想到别的东西。

你说你正在动态创建一个表单 - 你真的是指一个<表格>及其内容'导致asp.net在一个页面上的多个表单问题,它已经为你创建一个uberform。

2

最简单的方法是将IMO和runat服务器标签包含在所有元素中。

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

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

+0

好主意,但它听起来像他插入纯HTML;不是动态的控制,所以runat属性将永远不会得到处理 – rizzle 2008-12-23 15:38:38

+0

这一权利是我的问题的症结所在,runat属性永远不会被编译,所以我不能正确地访问它们。 – 2008-12-23 16:12:36

21

我猜测是你需要将这些输入元素设置为runat =“server”

所以,你将无法访问控制

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

但是,你就可以用

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

工作,并从中读取使用

string myStringFromTheInput = myTextBox.Value; 
+1

我得到`{}控制在当前context`没有发现,当我做到这一点... – Si8 2014-07-21 16:10:09

0

由于您使用的是asp.net代码隐藏功能,因此请将ID添加到元素和runat = server。

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

相关问题