JQuery BlockUI с UpdatePanel Viewstate Проблема - PullRequest
2 голосов
/ 16 февраля 2010

У меня есть панель обновления внутри div, которую я модалю с помощью плагина JQuery BlockUI. Внутри UpdatePanel находится текстовое поле и кнопка. Когда я ввожу что-то в текстовое поле и нажимаю кнопку, я не могу получить текст в текстовом поле. При отладке отображается текстовое поле без значения.

<asp:UpdatePanel ID="upTest" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
        <div id="divTest">
            <asp:TextBox ID="txtTestVS" runat="server" /><br />
            <asp:Button ID="cmdTest" Text="TEST" OnClick="cmdTest_Click" UseSubmitBehavior="false" runat="server" />
        </div>
    </ContentTemplate>
</asp:UpdatePanel>

Серверный:

protected void cmdTest_Click(object sender, EventArgs e)
{
    string x = txtTestVS.Text;
}

Это должно прояснить ситуацию. Вот общее содержание страницы.

<a href="javascript:$.blockUI({ message: $('#divTest') });">SHOW MODAL</a>

<div id="divTest">
    <asp:UpdatePanel ID="upTest" UpdateMode="Conditional" runat="server">
        <ContentTemplate>
            <asp:TextBox ID="txtTestVS" runat="server" /><br />
            <asp:Button ID="cmdTest" Text="TEST" OnClick="cmdTest_Click" UseSubmitBehavior="false" runat="server" />
        </ContentTemplate>
    </asp:UpdatePanel>
</div>

Ответы [ 2 ]

1 голос
/ 17 февраля 2010

Это обычная проблема с подключаемыми модулями диалога, проблема в том, что контент помещается в контейнер blockUI, добавляется к элементу и больше не в форме, отправляемой на сервер. Чтобы решить эту проблему, вам нужно немного отредактировать код blockUI:

Вот источник: http://github.com/malsup/blockui/blob/master/jquery.blockUI.js

Изменить это: Строка 262:
var layers = [lyr1,lyr2,lyr3], $par = full ? $('body') : $(el);
чтобы:
var layers = [lyr1,lyr2,lyr3], $par = full ? $('form') : $(el);

и это:

Строка 382:
els = $('body').children().filter('.blockUI').add('body > .blockUI');
чтобы:
els = $('form').children().filter('.blockUI').add('form > .blockUI');

Это должно помочь вам начать работу и значения текстовых полей.

(Ответ предоставлен Ником Крейвером https://stackoverflow.com/users/13249/nick-craver)

0 голосов
/ 16 февраля 2010

Если вы пытаетесь использовать blockUI на кнопке на панели обновлений (т. Е. Вы нажимаете кнопку на панели обновлений, и пользовательский интерфейс блокируется), вам нужно обработать это с помощью событий PageRequestManager

prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_beginRequest(function() {
            $.blockUI({ message: '<img  src="../../Content/images/Busy2.gif" />' });
        });

        prm.add_endRequest(function() {
            $.unblockUI();
        });

Или по нажатию кнопки, если вы хотите отобразить модальное окно с этим текстовым полем и кнопкой, вы можете попробовать что-то вроде this

...