我在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>
答案 0 :(得分:1)
这是对话框插件的常见问题,问题是当内容放在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');
这应该让你去,文本框值将通过。
(响应由Nick Craver提供https://stackoverflow.com/users/13249/nick-craver)
答案 1 :(得分:0)
如果您尝试在更新面板中的按钮上使用blockUI(即,您单击更新面板中的按钮并且UI被阻止),则需要使用PageRequestManager事件处理它
prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(function() {
$.blockUI({ message: '<img src="../../Content/images/Busy2.gif" />' });
});
prm.add_endRequest(function() {
$.unblockUI();
});
或者点击按钮,如果要显示带有此文本框和按钮的模态窗口,可以尝试类似this
的内容