【问题标题】:ASP.NET not seeing Radio Button value changeASP.NET 没有看到单选按钮值更改
【发布时间】:2010-09-12 21:50:49
【问题描述】:

我有一个带有一些默认禁用的单选按钮的表单。

当一个值被输入到文本框中时,单选按钮会通过 javascript 启用。然后,用户选择其中一个单选按钮并单击提交按钮,该按钮将回发到服务器。

当我返回服务器时,用户单击的单选按钮未显示为选中状态。我将使用“rbSolid”作为我关注的单选按钮。

我处理单选按钮的“onclick”事件,但除了触发之外,我还没有该函数做任何事情:

Me.rbSolid.Attributes.Add("onclick", "styleLookupChanged(this);")

在客户端,这会在文本框值更改时启用单选按钮:

document.getElementById("ctl00_MainLayoutContent_WebPanel4_rbSolid").disabled = false;

然后我单击单选按钮,然后通过按钮回发,但回到服务器上,这始终是错误的:

如果 Me.rbSolid.Checked Then...

如果我默认启用单选按钮,它会显示为正确选中。

感谢您的帮助!

【问题讨论】:

  • 您如何禁用上述单选按钮?您是在 JavaScript 中禁用它们还是通过服务器端代码禁用它们?

标签: asp.net javascript


【解决方案1】:

这与 ASP.NET 如何回发数据有关。如果在呈现页面时禁用了控件control.enabled = false,则这些值将不会被发送回服务器。我过去如何解决它是使用属性标签而不是使用 Enabled 属性设置禁用标志。所以你用control.attributes.add("disabled", "disabled")代替control.enabled = false

【讨论】:

    【解决方案2】:

    这对我不起作用。

    我补充说:

    Me.rbSolid.Style.Add("background-color", "red")
    
    Me.rbSolid.Style.Add("disabled", "true")
    

    背景样式有效,但disabled 无效。当表单呈现时它仍然是可编辑的。

    加载后的源码如下:

    <span style="font-family:Verdana;font-size:8pt;background-color:red;Disabled:true;">
      <input id="ctl00_MainLayoutContent_WebPanel4_rbSolid" type="radio" name="ctl00$MainLayoutContent$WebPanel4$DetailType" value="rbSolid" onclick="styleLookupChanged(this);"/>
      <label for="ctl00_MainLayoutContent_WebPanel4_rbSolid">Solid</label>
    </span>
    

    【讨论】:

    • 对不起,应该是 me.rbSolid.Attributes.Add("disabled", "disabled")。这应该可以解决您的问题。我已经编辑了我的原始答案以反映这一更正。
    【解决方案3】:

    显然禁用的是 html 属性而不是 css 属性。如果您在 asp.net 中禁用服务器端的单选按钮,然后检查呈现的 html,则单选按钮将嵌入到 span 标记中,其 disabled 属性设置为 true。您可以尝试定位按钮的跨度(父元素,它没有 id)并在您的 javascript 中设置 disabled=false 以查看是否有效

    【讨论】:

      猜你喜欢
      • 2019-12-17
      • 2012-11-27
      • 2015-11-29
      • 2021-01-22
      • 1970-01-01
      • 2016-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多