日期:2014-05-18  浏览次数:20408 次

Jquery与asp.net ajax是UpdatePanel使用问题
使用JQuery1.3.2的和它的UI库,弹出一个模式的窗口,简单代码如下:
<link href="../Css/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" id="child" />
<script src="../Script/jquery-1[1].3.2-vsdoc.js" type="text/javascript"></script>
<script src="../Script/jquery-ui.js" type="text/javascript"></script>

<script type="text/javascript" language="javascript">

  $(function() {

  $("#aa").dialog({
  height: '500',
  width: '710',
  modal: true,
  autoOpen: false,
  overlay: {
  backgroundColor: '#000',
  opacity: 0.5
  }
  });  
  });
</script>


<asp:ScriptManager ID="ScriptManager1" runat="server" 
  EnableScriptGlobalization="True">
</asp:ScriptManager>

<a href="#" onclick="$('#aa').dialog('open');">open</a>

<div id="aa" title="asdf">
  <asp:UpdatePanel ID="UpdatePanel3" runat="server">
  <ContentTemplate>  
  <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
  <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButon1_Click" ">LinkButton</asp:LinkButton>
  </ContentTemplate>
  </asp:UpdatePanel>
</div>

  protected void LinkButon1_Click(object sender, EventArgs e)
  {
  string text = TextBox1.Text;
   
  }
问题是在点击LinkButton后,text的值始终为空,也就是说TextBox1控件没有把值传过去,如何解决呀?

------解决方案--------------------
jquery dialog会把对话框内容移到form以外,和UpdatePanel有冲突,你可以照下面这样修改:
<script type="text/javascript" language="javascript">

$(function() {

$("#aa").dialog({
height: '500',
width: '710',
modal: true,
autoOpen: false,
overlay: {
backgroundColor: '#000',
opacity: 0.5
},
open: function() { $("body > div[role=dialog]").appendTo("#form1"); }
});
});
</script> 
建议最好还是不要用UpdatePanel,用jquery自己的ajax调用后台
------解决方案--------------------
点击时用JS把TextBox的值赋给一个隐藏域控件
后台再读取隐藏域控件的值