Кнопка Asp.net не отправляет отключенные элементы управления, даже с submitdisabledcontrols = "true" - PullRequest
2 голосов
/ 13 августа 2010

У меня есть страница с некоторыми отключенными элементами управления, она выглядит следующим образом

<form id="form1" runat="server" submitdisabledcontrols="true">
    <asp:UpdatePanel ID="upp" runat="server">
        <ContentTemplate>
            <asp:TextBox ID="textbox1" runat="server"  AutoPostBack="True" ontextchanged="textchaged_handler" />        
            <asp:TextBox ID="textbox2" runat="server" />
        </ContentTemplate>
    </asp:UpdatePanel>
    <asp:ImageButton ID="ibVerify" runat="server" OnClick="btnVerify_Click" ImageUrl="~/img/imagebutton.png" AlternateText="Verify" />
</form>

Программно, во время инициализации второе текстовое поле отключено с помощью некоторого кода на стороне сервера.

Проблема заключается в том, чточто, даже устанавливая submitdisabledcontrols = "true" в теге формы, значение отключенного текстового поля не отправляется на сервер, когда я нажимаю кнопку ImageButton.Я проверил это с помощью firebug, а также в VS, где извлекается старое значение.

Однако, когда я нажимаю клавишу TAB в первом текстовом поле, публикуется второе значение текстового поля, независимо от того, установлено submitdisabledcontrols или нет...

Есть идеи?

Ответы [ 3 ]

0 голосов
/ 31 января 2014

вместо

control.Enabled = false; 

Используйте

control.Attributes.Add("disabled", "disabled");

Таким образом, с точки зрения asp .net элемент управления по-прежнему включен, но он отображается на стороне клиента как отключенный элемент управления.

0 голосов
/ 26 мая 2014

В случае, если кто-то еще попадает на эту страницу, как я, я обнаружил, что причина, по которой «submitdisabledcontrols = true» не работал, была из-за моего типа документа:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

, когда я изменил этона:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

тогда это сработало.

Надеюсь, это кому-нибудь поможет:)

0 голосов
/ 13 августа 2010

Этот атрибут формы утверждает, что «Получает или задает логическое значение, указывающее, следует ли принудительно принудительно отключать элементы управления на клиенте для отправки их значений.», Поэтому я думаю, что вам нужно использовать отключенное свойство на стороне клиента, а не на стороне сервераENabled свойство, как в:

<asp:TextBox .. disabled="disabled" />
...