ASP.NET没有看到Radio Button值的变化

时间:2008-09-24 21:44:55

标签: asp.net javascript

我有一个表单,其中包含一些默认禁用的单选按钮。

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

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

我处理单选按钮的'onclick'事件,但除了触发之外我还没有执行任何操作的功能:

  

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

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

  

document.getElementById(“ctl00_MainLayoutContent_WebPanel4_rbSolid”)。disabled = false;

然后我点击单选按钮然后通过按钮回发,但回到服务器上这总是假的:

  

如果Me.rbSolid.Checked那么......

如果我在默认情况下启用了单选按钮,则会显示为已正确选中。

感谢您的帮助!

3 个答案:

答案 0 :(得分:6)

这与ASP.NET回发数据的方式有关。如果在呈现页面时禁用控件(control.enabled = false),则不会将值发布回服务器。我过去如何解决它是使用属性标记而不是使用Enabled属性设置禁用标志。因此,不使用control.enabled = false,而是使用control.attributes.add(“disabled”,“disabled”)。

答案 1 :(得分:0)

这对我不起作用。

我添加了

Me.rbSolid.Style.Add(“background-color”,“red”)

Me.rbSolid.Style.Add(“disabled”,“true”)

并且背景样式有效但“禁用”却没有。当表单呈现时,它仍然可以编辑。

这是加载后的来源:

<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>

答案 2 :(得分:0)

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