c# asp UpdatePanel.Update() 无法使用 jQuery 的 get
c# asp UpdatePanel.Update() not working with jQuery's get
有一个简单的测试用例,但不确定为什么在使用 jQuery 的 get
方法调用 url 时代码的行为方式不同。
后面的代码:
protected UpdatePanel UpdPanel;
protected PlaceHolder PlHolder;
protected virtual void Page_Load(object sender, EventArgs e)
{
PlHolder.Controls.Clear();
var count = Request.QueryString["count"];
AddControl(string.IsNullOrEmpty(count) ? 10 : Convert.ToInt32(count));
}
public void AddControl(int count)
{
for (var i = 0; i < count; i++)
{
var control = (TestList)Page.LoadControl("~/List/TestList.ascx");
control.TextBoxText = string.Format("{0} - test", i);
PlHolder.Controls.Add(control);
}
UpdPanel.Update();
}
标记:
<asp:UpdatePanel runat="server" ID="UpdPanel" UpdateMode="Conditional">
<ContentTemplate>
<asp:PlaceHolder runat="server" ID="PlHolder"></asp:PlaceHolder>
</ContentTemplate>
</asp:UpdatePanel>
Javascript:
<script type="text/javascript">
$(function() {
var link = $('.link'),
url = window.location.href.replace("#", "") + "default.aspx?count=20";
link.on('click', function() {
$.get(url);
});
});
</script>
如果我直接在浏览器中使用 url http://localhost:54645/default?count=20
UpdatePanel.Update()
可以正常工作,但使用 jQuery 的 get
则不行做任何事情。
页面生命周期事件的触发方式相同,没有区别(至少我是这么认为的)
也尝试使用 $.post()
,没有任何变化。
感谢任何帮助。
您需要在面板中放置一个 asp:button。
UpdatePanel实际上做了一个完整的post-back,客户端中的页面知道更新相关部分,所以你需要在你的Page_Load方法中记住这一点。
有一个简单的测试用例,但不确定为什么在使用 jQuery 的 get
方法调用 url 时代码的行为方式不同。
后面的代码:
protected UpdatePanel UpdPanel;
protected PlaceHolder PlHolder;
protected virtual void Page_Load(object sender, EventArgs e)
{
PlHolder.Controls.Clear();
var count = Request.QueryString["count"];
AddControl(string.IsNullOrEmpty(count) ? 10 : Convert.ToInt32(count));
}
public void AddControl(int count)
{
for (var i = 0; i < count; i++)
{
var control = (TestList)Page.LoadControl("~/List/TestList.ascx");
control.TextBoxText = string.Format("{0} - test", i);
PlHolder.Controls.Add(control);
}
UpdPanel.Update();
}
标记:
<asp:UpdatePanel runat="server" ID="UpdPanel" UpdateMode="Conditional">
<ContentTemplate>
<asp:PlaceHolder runat="server" ID="PlHolder"></asp:PlaceHolder>
</ContentTemplate>
</asp:UpdatePanel>
Javascript:
<script type="text/javascript">
$(function() {
var link = $('.link'),
url = window.location.href.replace("#", "") + "default.aspx?count=20";
link.on('click', function() {
$.get(url);
});
});
</script>
如果我直接在浏览器中使用 url http://localhost:54645/default?count=20
UpdatePanel.Update()
可以正常工作,但使用 jQuery 的 get
则不行做任何事情。
页面生命周期事件的触发方式相同,没有区别(至少我是这么认为的)
也尝试使用 $.post()
,没有任何变化。
感谢任何帮助。
您需要在面板中放置一个 asp:button。
UpdatePanel实际上做了一个完整的post-back,客户端中的页面知道更新相关部分,所以你需要在你的Page_Load方法中记住这一点。