C# asp回发和html控件

C# asp回发和html控件,c#,jquery,asp.net,C#,Jquery,Asp.net,我的html <input id="rdb1" type="radio" name="rdbData" checked="checked" /> <input id="rdb2" type="radio" name="rdbData" /> <asp:Button ID="btnTest" runat="server" Text="Test" OnClick="btnTest_Click" /> 但它不起作用。我们如何处理这种情况。我哪里出错了。有什么想

我的html

<input id="rdb1"  type="radio" name="rdbData" checked="checked" />
<input id="rdb2"  type="radio" name="rdbData" />
<asp:Button ID="btnTest" runat="server" Text="Test" OnClick="btnTest_Click" />
但它不起作用。我们如何处理这种情况。我哪里出错了。有什么想法或其他选择吗。谢谢。

Shree

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

<input id="rdb1" type="radio" name="rdbData" checked="true" runat="server" />
    <input id="rdb2" type="radio" name="rdbData" runat="server" />
    <asp:Button ID="btnTest" runat="server" Text="Test" OnClick="btnTest_Click" />

如果对你有用的话,试试这个

希望有帮助。

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

<asp:RadioButton id="rdb1" Checked="True" GroupName="RadioGroup1" runat="server" />
<asp:RadioButton id="rdb2" GroupName="RadioGroup1" runat="server" />


希望有帮助

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

我再说一遍,这个要求是荒谬的。他们如何告诉您使用了服务器端控件而不查看代码。这就像要求您使用筷子或其他东西编写代码一样

但是,作为练习,我提供了以下解决方案:

<input id="rdb1"  type="radio" name="rbdData" value="rbd1" <%= Rdb1Checked %> />
<input id="rdb2"  type="radio" name="rbdData" value="rbd2" <%= Rdb2Checked %> />
<asp:Button ID="btnTest" runat="server" Text="Test" onclick="btnTest_Click" /> 

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

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


根据定义,在ASP.NET中,所有HTML控件都继承自服务器控件。只需添加runat=“server”,您就可以从codebehind访问该控件,尽管它仍将作为普通HTML控件呈现在页面中。

尝试
bind()上的
e.preventDefault
事件我无法使用
服务器端
控件。这是我的项目需求。这是我面临的一个示例问题。我无法使用
服务器端
控件。这是我的项目需求。这是我面临的一个示例问题。按钮是服务器端控件,您正在使用它。Yap项目很大,它是项目需求。我不知道可以在这里发布所有内容。这是一个条件。所以我已经提到了按钮是服务器端的。
<input id="rdb1"  type="radio" name="rbdData" value="rbd1" <%= Rdb1Checked %> />
<input id="rdb2"  type="radio" name="rbdData" value="rbd2" <%= Rdb2Checked %> />
<asp:Button ID="btnTest" runat="server" Text="Test" onclick="btnTest_Click" /> 
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 "";
    }
}