ASP.NET没有看到单选按钮的值更改

时间:2020-03-06 14:41:28  来源:igfitidea点击:

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

当在文本框中输入值时,将通过javascript启用单选按钮。然后,用户选择单选按钮之一,然后单击提交到服务器的提交按钮。

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

我处理单选按钮的'onclick'事件,但是除了触发之外,我没有其他功能:

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

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

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

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

If Me.rbSolid.Checked Then...

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

谢谢你的帮助!

解决方案

这与ASP.NET回发数据的方式有关。如果在呈现页面时禁用了控件(control.enabled = false),则这些值将不会被发布回服务器。我过去的解决方法是使用属性标签而不是Enabled属性来设置Disabled标志。因此,我们可以使用control.attributes.add(" disabled"," disabled")而不是control.enabled = false。

这对我不起作用。

我加了

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>

显然禁用的是html属性而不是css属性。如果我们在asp.net的服务器端禁用了一个单选按钮,然后检查了呈现的html,则该单选按钮将嵌入在span标签中,并且其disable属性设置为true。我们可以尝试定位按钮的跨度(父元素,它没有ID),并在JavaScript中设置disable = false来查看是否可行