从服务器端

时间:2017-08-29 02:52:46

标签: c# radio-button

目前使用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&amp; Google和大多数解决方案都提到了以下两种方法:

  1. rb.enabled = false;
  2. 结果:

    <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(&#34;禁用&#34;&#34;禁用&#34);
    2. 结果:

      <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可以通过向radiobutton的子(输入)添加禁用属性来解决这个问题,但我想知道在服务器端禁用的方法(c#)

1 个答案:

答案 0 :(得分:0)

我猜您的问题是:Asp.net WebForm后端代码不会动态更改您的HTML。

您可以将WebForm与WinForm进行比较以查看差异:

  • 在WinForm桌面应用程序中,自动显示您的应用程序窗口 每秒刷新几次。当你的代码设置收音机 按钮被禁用,在您的应用程序窗口REFRESH本身之后 几毫秒,你可以看到禁用BECOME单选按钮。
  • 在WebForm Web应用程序中,您的网页并不令人满意 自动完成。它只会在您的网页发送时刷新 回到服务器的东西(例如按钮点击事件),然后是 整个页面将刷新。

因此,您必须清楚在网页发回某些内容之后以及在浏览器中呈现之前发生的每个步骤的执行顺序:

  1. 浏览器中发生了某些事情(例如,输入网址并按 输入,单击加载页面上的按钮等。)
  2. 浏览器向服务器发送请求。如果是由它触发的 在您的网页上的内容,请求将包括很多 信息包括一个名为ViewState的大事。
  3. 您的服务器将ViewState解析为C#对象(您的网页是 在WinForm桌面应用程序中编译为C#类)。如果它 不包含ViewState,服务器将为您新建一个对象。
  4. 根据请求,执行某些代码。 (例如。 OnXxxClicked等。)
  5. 然后是网页对象中的一个方法,它继承自它的方法 调用BaseClass,它将自己呈现为一个html字符串和 该html字符串中的编码视图状态字符串。
  6. 最后这个长html字符串将被发送到浏览器。
  7. 因此,您必须确保在步骤3中执行禁用单选按钮的代码,并且您必须知道网页上的哪些操作将触发步骤1.