【问题标题】:Is is possible to get ASP.NET input controls to act like a basic HTML Form?是否可以让 ASP.NET 输入控件像基本的 HTML 表单一样工作?
【发布时间】:2009-08-10 20:22:25
【问题描述】:
ASP.NET 在制作数据输入页面方面有很多不错的功能:
- 添加输入控件很容易 (
<asp:...)。
- 系统自动为控件生成成员变量。
- 回发自动使用返回值填充成员变量。
还有一些不太好的地方
- 即使在最简单的情况下,回发似乎也与 JavaScript 相关联。例如,对于静态定义的页面,仅使用编译时已知的基本控件。
我的问题:
- 是否可以在没有第二个的情况下获得第一个列表?
- JavaScript 为用户提供了哪些功能?
- JavaScript 实际上做了什么?
- 即使在微不足道的情况下也使用它的技术原因是什么?
碰巧我的假设是错误的:见here
【问题讨论】:
标签:
asp.net
forms
web-controls
【解决方案1】:
这实际上取决于您在此处尝试使用的控件类型——实现 javascript 的唯一控件是那些本身不能导致回发的控件(即,输入/提交按钮是仅有的两个可以) .如果您使用 LinkButton、ImageButton 或任何您设置“AutoPostBack = true”的东西将打开 javascript 以导致回发。
如果其他控件(例如日历)更高级,也可以使用 javascript。在这里使用 javascript 的技术原因是在控件需要更高级的服务器交互时提供自动回发 - 想想看,一个链接意味着永远只是一个链接,如果我们试图让它作为一个按钮运行,我们必须通过 javascript 交互强制它这样做。
话虽如此,是的,您绝对可以在没有 javascript 的情况下使用 ASP.NET,您只需要通过包含没有它就不可能拥有的功能来避免实现它的控件。您可以轻松地添加 HTML 控件并添加 runat="server" 属性并从代码隐藏控件中获取成员变量。
【解决方案2】:
这就是我想到的:
JavaScript 为用户提供了哪些功能?
客户端验证。
那个 JavaScript 实际上做了什么?
例如,它通过设置 __EVENTTARGET 隐藏字段来确保调用正确的(服务器端)事件处理程序。
如果没有第二个列表,是否可以获得第一个列表?
您可以使用普通的 HTML 控件来代替 ASP.NET 控件。然后在服务器端,您可以从 Form 集合中读取控件的值。
【解决方案3】:
我假设您的意思是与 <asp:Button /> 控件关联的 javascript,对吧?
除了Fooberichu提到的原因外,javascript还可以帮助ASP.NETs客户端验证框架。
但我认为它的主要用途是提醒框架它应该在后面页面的回发中触发哪些事件。
因此,如果表单上有两个按钮,SaveButton 和 DeleteButton,则 javascript 会帮助框架知道它应该执行 SaveButton_Click 事件还是 DeleteButton_Click 事件。
希望这会有所帮助。