【问题标题】:asp.net: Handling form data in Visual Studio 2010asp.net:在 Visual Studio 2010 中处理表单数据
【发布时间】:2026-02-03 04:45:01
【问题描述】:

使用 Visual Studio 2010 (VB) 创建 asp.net 网络表单页面的学习曲线更上一层楼。

我用表单控件编写了一个相当复杂的 .aspx 页面,包括文本框和按钮等。我从未想过将表单控件放在 <form> 块中。相反,所有控件都包含“runat”指令;例如,<asp:textbox id="txtUserName" runat="server"> 等。在代码隐藏中,我使用strUserName = txtUserName.text 访问数据。这似乎工作得很好。

不过,现在,我从我们签约的“专业”网络开发人员那里收到了一些表单页面,其中表单代码全部包含在 <form runat="server">block 中,并且没有任何控件包含 runat 指令。从这些控件访问数据有点不同:它使用<input type="text name="txtUserName" id="txtUserName" /> 方法,并在代码隐藏中访问数据 是strUserName = Request.Form("txtUserName").ToString

我的方法似乎工作正常,但我想知道我的方法和他的方法在行为或可靠性方面是否存在差异。即使我的方法有效,我做错了吗?

我是基于我为学习这些东西而进行的在线研究,我不记得看到过任何看起来像他的东西。但是,就在今天,我看到一些地方说在 .aspx 页面上,表单控件必须包含在 <form> 块中(即 this page at w3schools.com)。

谁能帮我澄清一下?

感谢您的帮助!

【问题讨论】:

  • 没有表格如何在服务器上汇总数据。

标签: asp.net vb.net forms visual-studio-2010 runat


【解决方案1】:

您没有做错(您使用的是我的首选方法),但您的输入仍应位于封闭的 Form 标记中。

他正在使用 HtmlControls(System.Web.UI.HtmlControls 命名空间),而您正在使用 Web 控件(System.Web.UI.WebControls)。您的控件在服务器上提供了更好的功能(视图状态和通过服务器代码访问),并且他的方法是重量更轻。

【讨论】:

  • 考虑到他为我们写的页面非常广泛,这是有道理的。这是我们公司的网上商店。它不完全是一个最先进的电子商务网站,它只是通过电子邮件将客户的订单发送给我们的销售部门,因此它不处理信用卡等;但我的要简单得多,尽管它确实使用了更新面板。谢谢!
  • 如果你需要一个表单标签,否则当你放置任何 asp.net 控件时,你的 asp.net 页面会抛出错误。您的页面是否使用 MasterPage?在这种情况下,表单将在 MasterPage 中,而不是在您的 .aspx 页面中。
  • 我们签约的 Web 开发人员提供的页面仅包含主 aspx 页面和 CS 代码隐藏。您是否建议将表单移至母版页?这样做会有什么好处吗?事实上,它仍然在 Visual Studio 中抛出一些错误,我不得不解决这些错误。很难对另一个程序员进行事后的猜测。
  • 在不了解您的具体结构的情况下。我个人建议不要在没有特定应用程序/结构原因的情况下将表单标记放在母版页中。