【问题标题】:Asp.net Textbox.Autopostback causes another issueAsp.net Textbox.Autopostback 导致另一个问题
【发布时间】:2017-11-19 10:51:35
【问题描述】:

我在表单上有下拉列表和 texboxes 以及一个按钮。我对所有表单元素使用“autopostback=true”。当您填写表格时,您需要按下“发送”按钮。但是因为 texbox.autopostback,需要 push 2 次才能发送表单。

如果您最后选择下拉菜单,则没有问题。但是,如果您要填写文本框,则需要单击 2 次才能发送表单。

有什么解决办法吗?我必须使用 textboxes.autopostback='true' 但需要一些解决方案。

谢谢,

更新:

所有控件都保留在 updatepanel 元素中。

【问题讨论】:

  • 您确定需要自动回发吗?你在那个回发中做什么?
  • 我正在使用验证来检查控件。 (动态)@Crowcoder
  • 许多验证可以在 javascript 中在客户端完成,然后在提交表单时再次在服务器端完成。如果您只能使用服务器端验证,那么您的选择是有多个回发或使用 ajax 异步进行验证。
  • 我同意@Crowcoder。尝试在客户端使用 javascript 进行所有验证
  • 如果您显示代码,它将非常有帮助。另外,你喜欢什么样的行为?为什么要启用自动回发?

标签: c# asp.net webforms textbox autopostback


【解决方案1】:
  • 当文本框回发且其值有效时,将隐藏字段值设置为“1”,否则将隐藏字段值设置为“0”
  • 在客户端,pageLoad 事件中,如果隐藏字段值为“1”,则自动单击按钮。因此,用户按钮只需单击一次,当文本回传返回时您会自动提交表单。

以上两点都需要在您的代码隐藏中完成。

此逻辑的结果将强制执行一致的工作流程,其中按钮只能单击一次以提交页面。

【讨论】:

  • 看起来不错,但主要问题是这样的:当您单击并选择下拉菜单而不是提交按钮时 = 没问题。当您填充文本框时,您需要单击某处以自动回发以进行服务器端验证。它云是空的背景或其他文本框不合适。比发送按钮再次起作用。或者您在填写文本框后只需单击 2 次发送按钮。我认为我们需要一些文本框或类似的“onfocusout”事件?顺便说一句,我忘了说,所有控件都在 updatepanel @Sunil
  • 在这种情况下,您可以在 pageLoad 客户端事件中编写 JavaScript。当文本框回发时,除了我在回答中提到的其他逻辑之外,您还可以在代码隐藏中设置一个隐藏字段。在 pageLoad 事件中,编写 JavaScript 获取隐藏字段值;如果此值为"1",则回发文本框并使用此代码if(hdnValue == "1") { btnPost.Click(); btn.disabled = true;}。这仅意味着用户在回发文本框时单击一次按钮。
猜你喜欢
  • 1970-01-01
  • 2010-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多