【问题标题】:Disable RadioButton (NOT in Radio Button list) from server side从服务器端禁用 RadioButton(不在 Radio Button 列表中)
【发布时间】:2017-08-29 12:14:40
【问题描述】:

目前使用 3 个单选按钮并使用 GroupName 对它们进行分组。

单选按钮的代码

 <asp:Panel class="RBPnl" runat="server" ID="pnl_rb">
      <asp:RadioButton ID="rb" runat="server" GroupName="rbg_RB" Text="Radio Button" CssClass="RB" />
           <label class="RBDesc">Radio Button Descriptions</label>
 </asp:Panel>

现在基于某些条件,我想从后面的代码中禁用单选按钮。搜索了 SO 和 Google,大多数解决方案都提到了以下两种方法:

  1. rb.enabled = false;

结果:

<span class="aspNetDisabled RB">
<input id="cph_content_rb" type="radio" name="ctl00$cph_content$rbg_rb" value="rb">
<label for="cph_content_rb">Radio Button</label></span>
  1. rb.Attributes.add("disabled","disabled");

结果:

<span class="RB" disabled="disabled">
<input id="cph_content_rb" type="radio" name="ctl00$cph_content$rbg_rb" value="rb">
<label for="cph_content_rb">Radio Button</label></span>

如您所见,我尝试了这两种方法,但仍然能够检查应该禁用的单选按钮,因为它应该禁用输入,但代码在 span 处禁用。

我知道 javascript 可以通过向单选按钮的子项(输入)添加禁用属性来解决这个问题,但我想知道在服务器端禁用的方法(c#)

【问题讨论】:

  • rb.Enabled = false 导致 disabled 属性添加到单选按钮。关于这个单选按钮或组还有什么我们应该知道的吗?
  • @Nico 添加了单选按钮的 html 代码,如果有帮助的话

标签: c# radio-button


【解决方案1】:

我猜你的问题是:Asp.net WebForm 后端代码不会动态改变你的 html。

您可以将 WebForm 与 WinForm 进行比较以了解区别:

  • 在 WinForm 桌面应用程序中,您的应用程序窗口会自动 每秒刷新几次。当您的代码设置收音机时 按钮禁用,在您的应用程序窗口 REFRESH 之后 几毫秒后,您会看到单选按钮被禁用。
  • 在 WebForm Web 应用程序中,您的网页不刷新 自动地。只有在您的网页发送时才会刷新 一些东西回到服务器(例如按钮点击事件),然后 整页都会刷新。

所以你一定要清楚网页发回东西到浏览器渲染之前每一步的执行顺序:

  1. 浏览器中发生了某些事情(例如,输入 url 并按 输入,单击加载页面上的按钮等)
  2. 浏览器向服务器发送请求。如果它被触发 您网页上的某些内容,请求将包括很多 信息包括一个叫做 ViewState 的大东西。
  3. 您的服务器将 ViewState 解析为 C# 对象(您的网页是 像 WinForm 桌面应用程序一样编译为 C# 类)。如果它 不包含 ViewState,服务器将为您新建一个对象。
  4. 根据请求,执行某些代码。 (例如。 OnXxxClicked 等)
  5. 然后是你的网页对象中的一个方法,它继承自它的 BaseClass,被调用,它将自己呈现为一个 html 字符串和 该 html 字符串中的编码视图状态字符串。
  6. 最后这个长长的html字符串会被发送到浏览器。

因此,您必须确保禁用单选按钮的代码在步骤 3 中执行,并且您必须知道网页上的哪些操作会触发步骤 1。

【讨论】:

  • 这是在页面加载时执行的,所以我相信这不是主要原因(另外我实际上尝试在禁用的同时编辑单选按钮的文本,它确实更改了文本但没有禁用)
猜你喜欢
  • 2019-10-03
  • 1970-01-01
  • 2015-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-01
  • 2020-03-02
相关资源
最近更新 更多