【问题标题】:Posting changed values of a disabled control in ASP.NET在 ASP.NET 中发布已禁用控件的更改值
【发布时间】:2014-02-28 12:58:19
【问题描述】:

示例

<asp:TextBox ID="txbx" runat="Server" Text="1" Enabled="false" />
  1. 值为'1' 的文本框设置为禁用。

  2. 使用 javascript 将 texbox 值更新为 '2'

  3. 当发布到服务器时,使用初始值'1'

我已尝试使用以下 VB 代码覆盖此功能:

Page.Form.SubmitDisabledControls = True

问题

为什么更新后的值没有发布到服务器?

注意事项

更新值正确发布'2' if enabled="true"

<asp:TextBox ID="txbx" runat="Server" Text="1" Enabled="true" />

【问题讨论】:

  • 值没有丢失。你用javascript改变它吗?但是,这是一个与您的问题有关的线程:forums.asp.net/t/1243343.aspx
  • @TimSchmelter 是,但如果我删除 enable="false" 则不会出现问题
  • 控件是在母版页中还是在内容页中?
  • 控件在内容页中。我想通过将 SubmitDisabledControls 添加到母版页来提交站点范围内的所有禁用值。
  • @TimSchmelter 在考虑您的 cmets 后,我修改了我的问题。有什么想法吗?

标签: c# asp.net vb.net post disabled-control


【解决方案1】:

实际上,如果您为某些 ASP 控件设置 Enabled = false,则该特定控件将在客户端呈现,但其类将设置为 "aspNetDisabled",这会阻止其值被编辑。我发现无法编辑/更改此类。因此,您无法使用任何客户端脚本(如 JavaScript)来编辑其值。

当您尝试将其值发布回服务器时,将使用服务器中的初始值。

如果启用该控件,它会被渲染,在这种情况下,您可以根据需要访问/编辑其值。

【讨论】:

  • 您可以设置style = "display : none" 而不是禁用它。在这种情况下,所有 JavaScript 函数都可以正常工作。
  • 您将EnabledVisible 混淆了。禁用的控件将在客户端呈现,但它们不需要保留在ViewState 中。您可以使用隐藏字段来存储新值,在服务器上您将使用此值作为 TextBox
  • 该值需要可见。如果你们中的任何人想继续提供帮助,我在这里创建了一个后续问题。 stackoverflow.com/questions/22096984/…
  • 我已经编辑了我的答案。你解释的问题,我有一个解决方法。我已经在后续帖子中发布了。
  • 这是我 7 年后寻找的答案,你帮助了我。
猜你喜欢
  • 2010-09-14
  • 1970-01-01
  • 1970-01-01
  • 2010-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多