如何从asp.net代码后面访问html表单输入

33 html c# forms asp.net

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

以下所有建议都很棒,通常这就是我要做的.但是这些表单是在编译页面后即时构建的,因此runat ='server'对我没有任何作用.它只是传递到html页面.

Bry*_*ein 66

如果您正在访问纯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>
Run Code Online (Sandbox Code Playgroud)

您应该能够访问customerName和customerPhone数据,如下所示:

string n = String.Format("{0}", Request.Form["customerName"]);
Run Code Online (Sandbox Code Playgroud)

如果你有method="GET"表格(不推荐,它会弄乱你的网址空间),你将不得不访问这样的表单数据:

string n = String.Format("{0}", Request.QueryString["customerName"]);
Run Code Online (Sandbox Code Playgroud)

这当然只有在表格"已发布","已提交"或通过"回发"完成时才有效.(即有人点击了"保存"按钮,或者这是通过javascript以编程方式完成的.)

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

  • 这正是问题,我错过了method = post属性.非常感谢你. (3认同)

小智 21

我猜的是你需要将那些输入元素设置为runat ="server".

因此您将无法访问该控件

<input type="text" name="email" id="myTextBox" />
Run Code Online (Sandbox Code Playgroud)

但是你将能够合作

<input type="text" name="email" id="myTextBox" runat="server" />
Run Code Online (Sandbox Code Playgroud)

并通过使用阅读

string myStringFromTheInput = myTextBox.Value;
Run Code Online (Sandbox Code Playgroud)

  • 当我这样做时,我在当前上下文中找不到`{control} ... (2认同)

Gan*_*ant 9

通常应该这样做Request.Form["elementName"].

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