Chr*_*ris 4 asp.net viewstate jquery updatepanel blockui
我正在使用BlockUI来显示模态.在阻止的模式中,我有一个更新面板.在更新面板中,我有一个文本框和一个按钮,可以将内容提交回服务器.到目前为止一切正常(调用blockUI,出现模态,按钮执行回发).但是,当按钮的click事件被触发时,即使输入了文本,文本框的值也始终为空.更新面板更新时,文本框显示为空白.看来这可能是某种viewstate问题,我没有关闭viewstate.
<a href="javascript:$.blockUI({ message: $('#divTest') });">SHOW MODAL</a>
<div id="divTest" style="display: none;">
<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>
Run Code Online (Sandbox Code Playgroud)
服务器端:
protected void cmdTest_Click(object sender, EventArgs e)
Run Code Online (Sandbox Code Playgroud)
{string x = txtTestVS.Text; }
字符串"x"始终等于"".
这是对话框插件的常见问题,问题是当内容放在blockUI容器中时,它会附加到<body>元素上,而不再是提交给服务器的表单.要解决这个问题,您需要稍微编辑一下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');
这应该让你去,文本框值得通过.
| 归档时间: |
|
| 查看次数: |
3457 次 |
| 最近记录: |