asp回发问题和HTML控件

我的HTML。

   

按钮只是asp:button但是radio buttons不是。第一次加载页面时rdb1被选中。但是当我点击按钮btnTest并检查rdb2 ,页面被刷新并选择第一个redio按钮。为了防止这种情况我尝试jquery这样。 Inside Document.ready

 var btnTest = ""; $('#' + btnTest).bind("click", function() { if ($('#rdb1').attr("checked")) { $('#rdb2').attr("checked", false); $('#rdb1').attr("checked", true); } else { $('#rdb1').attr("checked", false); $('#rdb2').attr("checked", true); } }); 

但它不起作用。我们怎样处理这种情况。我在哪里出错。任何想法或任何替代方案。谢谢。

我再说一遍,要求是ABSURD。 他们如何在不查看代码的情况下告诉您使用过的服务器端控件。 这就像要求你用筷子或其他东西编写代码。

然而,正如练习我提供以下解决方案:

  />  />  

而背后的代码:

 protected string Rdb1Checked { get { if (IsPostBack) { if (Request["rbdData"] == "rbd1") { return "checked"; } else { return ""; } } return "checked"; } } protected string Rdb2Checked { get { if (IsPostBack) { if (Request["rbdData"] == "rbd2") { return "checked"; } else { return ""; } } return ""; } } 

问他们为什么有这些要求。 也许他们不想看到客户端ID,在这种情况下,您可以将ClientIDMode设置为Static并避免自动生成的ID。 您可以通过将它们设置为null等来完全删除它们。也许它们不喜欢Web窗体为单选按钮呈现的内容,在这种情况下使用服务器端输入就可以了。 这个要求本身就没有意义。

如果这是请求,我建议你有一个隐藏字段(服务器端),它将保持选择哪个输入单选按钮的状态(当用户点击单选按钮时,使用jquery更新隐藏字段)。 然后在回发时,由于隐藏字段设置在runat =“server”,它将保持其值(viewstate),您只需使用jquery将右侧单选按钮设置为选中状态。 那有意义吗 ?

斯里

事实是客户端点击(由jQuery添加)在调用服务器之前执行。 如果要保留selectin,请尝试使用服务器端控件:

    

如果它适合您,请尝试此操作。

希望能帮助到你。

单击“测试”按钮时,页面将回发到服务器,该服务器将重新呈现所有客户端控件,就像第一次加载页面一样。 由于整个页面都被重新加载,jQuery也会“忘记”控件的状态,因此这种方法也不起作用。 防止这种情况的最简单方法是确保单选按钮在服务器端运行。 例如:

   

希望有所帮助!

你什么意思? 您有一个要求,不允许您使用“服务器端控件”或您的IDE不允许这样做?

根据定义,在ASP.NET中,所有HTML控件都从服务器控件inheritance。 只需添加runat =“server”,您就可以从代码隐藏中访问该控件,尽管它仍然会在页面中呈现为普通的HTML控件。