【问题标题】:Server side disabled input radio not preserving client changed state on postback服务器端禁用输入无线电不保留客户端在回发时更改的状态
【发布时间】:2010-08-05 18:36:07
【问题描述】:

这是一个奇怪的问题,今天一直困扰着我。由于 asp:RadioButtons 在跨度中呈现,我决定使用带有 runat="server" 的 std 输入控件。

<input ID="rbDayRate" type="radio" runat="server" disabled="disabled" />

现在您可以看到默认情况下此控件已禁用。如果用户单击复选框,它由 jQuery 启用。但是,一旦控件的状态到达服务器端并且我开始使用它,它就不是正确的值了。

我检查了所有在加载回发数据后修改它的代码,但没有。我什至检查了 Fiddler2 中的 http post 数据,它被浏览器正确发回了。

更奇怪的是,如果我删除禁用的标志,控件就可以正常工作。

有什么想法吗?!?!

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    理查德,

    原因是,您已从服务器端禁用该控件,即使您使用 JQuery 从客户端启用它,服务器也不知道它。因此它保持与不期望更改禁用控件的值相同的值...

    尝试从客户端禁用它,应该这样工作....

    【讨论】:

    • 这是我得出并实施的结论。但是我认为这可以归类为 asp.net 中的一个错误,就好像在进行回发时控件仍然被禁用,它不会存在于发布的数据中。如果在重新加载控件时存在 asp.net,则应检测到这一点并根据需要更改状态。
    【解决方案2】:

    您可以尝试将enableviewstate="true" 属性添加到控件。这应该允许控件在回发后保留其数据/值。

    【讨论】:

    • 不,这行不通。我不会在事件中更改控件的状态,也不会要求在后续回发时维护数据。我正在更改 JavaScript 中的状态,我只需要在第一篇文章中使用它。但是像往常一样,我必须从msdn.microsoft.com/en-us/library/ms972976.aspx 刷新自己以确保! :)
    猜你喜欢
    • 1970-01-01
    • 2011-06-14
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    相关资源
    最近更新 更多