今天就让我们看看在 ASP.NET 中使用 jQuery.load() 方法来调用 ASP.NET 的方法,实现无刷新的加载数据。
使用 jQuery 的朋友应该知道可以使用 jQuery.load() 加载静态页面,并可指定要加载的区域,如在"test.html"中有如下内容:
<div id="show">
<a href="http://www.jquery001.com/">jQuery001</a>
</div> <div>
<a href="http://www.xxx.com/">xxx</a>
</div>
在调用页面"Default.aspx"如下:
<body>
<div id="result"></div>
</body> $(document).ready(function() {
$("#result").load("test.html #show");
});
相信大家能够想像到输出的结果,这样调用只会加载 id 为"show" 的 div 中的内容。下边我们进入本文的主题,看看在 ASP.NET 中怎么使用 jQuery.load() 方法无刷新的调用后台方法。假如有后台代码如下,它根据 "owner" 参数,绑定rptTest:
public partial class _Default : System.Web.UI.Page
{
public List website;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SetTestData(); if (!string.IsNullOrEmpty(Request.QueryString["owner"]))
{
rptTest.DataSource = website.Where(m => m.Owner == Request.QueryString["owner"]);
rptTest.DataBind();
}
}
} public void SetTestData()
{
website = new List();
website.Add(new Website() { Name = "Google+", Owner = "Google" });
website.Add(new Website() { Name = "Youtube", Owner = "Google" });
website.Add(new Website() { Name = "265.com", Owner = "Google" });
website.Add(new Website() { Name = "asp.net", Owner = "Microsoft" });
website.Add(new Website() { Name = "MSN", Owner = "Microsoft" }); } protected void btnTest_Click(object sender, EventArgs e)
{ } } public class Website
{
public string Name { get; set; }
public string Owner { get; set; }
}
前台代码如下,执行 "btnTest" 单击事件时,使用 event.preventDefault()阻止了按钮的默认执行方式,从而使用 jQuery.load() 方法传递了"owner"参数访问 Default.aspx 页面:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script src="js/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#result").load("test.html #show"); $("#<%= btnTest.ClientID %>").click(function(event) {
event.preventDefault();
var owner = $("#<%= ddlTest.ClientID %>").val();
$("#result").load("Default.aspx?owner=" + owner + " #show");
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="show">
<asp:Repeater ID="rptTest" runat="server">
<ItemTemplate>
<div><%#Eval("owner") %>:<%#Eval("Name") %></div>
</ItemTemplate>
</asp:Repeater>
</div>
<%=DateTime.Now %>
<div id="result"></div>
<asp:DropDownList ID="ddlTest" runat="server">
<asp:ListItem Value="Google">Google</asp:ListItem>
<asp:ListItem Value="Microsoft">Microsoft</asp:ListItem>
</asp:DropDownList>
<asp:Button ID="btnTest" runat="server" Text="查询" onclick="btnTest_Click" />
</form>
</body>
其他没有什么新知识,其中输出了当前时间来验证使用这种方法并没有刷新页面,结果如下图所示:
在 ASP.NET Webform 中适当使用这种方式可减少页面刷新,从而提高用户体验。你可以从 jQuery学习直接下载在 ASP.NET 中使用 jQuery.load() 方法
http://www.jquery001.com/jquery-load-in-asp-net.html