我有一个表单,其中包含一些默认禁用的单选按钮。
当一个值输入文本框时,单选按钮通过javascript启用。然后,用户选择一个单选按钮并单击提交按钮,该按钮将回发到服务器。
当我返回服务器时,用户点击的单选按钮未显示为已选中。我将使用'rbSolid'作为我关注的单选按钮。
我处理单选按钮的'onclick'事件,但除了触发之外我还没有执行任何操作的功能:
Me.rbSolid.Attributes.Add(“onclick”,“styleLookupChanged(this);”)
在客户端上,这会在文本框值更改时启用单选按钮:
document.getElementById(“ctl00_MainLayoutContent_WebPanel4_rbSolid”)。disabled = false;
然后我点击单选按钮然后通过按钮回发,但回到服务器上这总是假的:
如果Me.rbSolid.Checked那么......
如果我在默认情况下启用了单选按钮,则会显示为已正确选中。
感谢您的帮助!
答案 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以查看是否有效