JQuery异步加载PartialView的方法
本文实例讲述了JQuery异步加载PartialView的方法。分享给大家供大家参考,具体如下:
需求:页面上有dropdown之类的控件,当选择里面不同值的时候,下面关联的内容跟着改变。
思路:把与dropdown关联的会改变的内容放到PartialView(ascx)里,用JQuery绑定dropdown的change事件,当选择值改变时,用JQueryajax请求与PartialView相关的Action,得到数据后讲取到的内容覆盖原来的内容。
实现:
Model类:
publicclassUser
{
publicstringUserName{get;set;}
publicintAge{get;set;}
publicintUserID{get;set;}
publicstaticList<User>GetUsers()
{
List<User>userList=newList<User>();
Useruser=null;
user=newUser();
user.UserID=1;
user.UserName="小明";
user.Age=20;
userList.Add(user);
user=newUser();
user.UserID=2;
user.UserName="小红";
user.Age=21;
userList.Add(user);
user=newUser();
user.UserID=3;
user.UserName="小强";
user.Age=22;
userList.Add(user);
returnuserList;
}
publicstaticUserGetUserById(intuserId)
{
returnGetUsers().SingleOrDefault(u=>u.UserID==userId);
}
}
我们的PartialView:
<%@ControlLanguage="C#"Inherits="System.Web.Mvc.ViewUserControl<MvcApplication2.Models.User>"%>
<div>
<%if(Model!=null)
{%>
用户名:<%=Model.UserName%><br/>
年龄:<%=Model.Age%>
<%}%>
</div>
主页面:
<%@PageTitle=""Language="C#"MasterPageFile="~/Views/Shared/Site.Master"Inherits="System.Web.Mvc.ViewPage<MvcApplication2.Models.User>"%>
<asp:ContentID="Content1"ContentPlaceHolderID="TitleContent"runat="server">
Index
</asp:Content>
<asp:ContentID="Content2"ContentPlaceHolderID="MainContent"runat="server">
<h2>Index</h2>
<%=Html.DropDownList("users",ViewData["users"]asList<SelectListItem>)%>
<divid="userDetails">
<%Html.RenderPartial("UserDetails",Model);%>
</div>
</asp:Content>
<asp:ContentID="Content3"ContentPlaceHolderID="HeadMeta"runat="server">
<scriptlanguage="javascript"src="/Scripts/user.js"type="text/javascript"></script>
</asp:Content>
Controller类:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.Mvc;
usingMvcApplication2.Models;
namespaceMvcApplication2.Controllers
{
publicclassUserController:Controller
{
publicActionResultIndex()
{
List<SelectListItem>userIdList=newList<SelectListItem>();
foreach(MvcApplication2.Models.UseriteminMvcApplication2.Models.User.GetUsers())
{
userIdList.Add(newSelectListItem{Text=item.UserName,Value=item.UserID.ToString()});
}
ViewData["users"]=userIdList;
MvcApplication2.Models.Useruser=MvcApplication2.Models.User.GetUsers().FirstOrDefault();
returnView(user);
}
publicPartialViewResultUserDetails(int?userId)
{
MvcApplication2.Models.Useruser=null;
if(userId==null)
{
user=MvcApplication2.Models.User.GetUsers().FirstOrDefault();
}
else
{
user=MvcApplication2.Models.User.GetUserById(userId.Value);
}
returnPartialView(user);
}
}
}
我们需要在Master页里指定我们的PartialView对应的Action路径,这样实现:
在Head里加上如下代码:
<scriptlanguage="javascript"type="text/javascript">
mySite={
actions:{
userDetails:'<%=Url.Action("UserDetails","User")%>'
}
};
</script>
我们对应的JS代码:
$(document).ready(function(){
$("#users").change(function(){
dropDownChange();
});
});
functiondropDownChange(){
varuserId=$("#users").val();
$.ajax({
type:"POST",
url:mySite.actions.userDetails,
data:{userId:userId},
success:function(data){
$("#userDetails").html(data);
}
});
}
这样就实现了选择相应的user,显示对应的详细信息了。
只是一个简单的Demo,希望对需要此功能的人起到帮助作用。
更多关于jQuery相关内容感兴趣的读者可查看本站专题:《jquery中Ajax用法总结》、《jQuery表格(table)操作技巧汇总》、《jQuery拖拽特效与技巧总结》、《jQuery扩展技巧总结》、《jQuery常见经典特效汇总》、《jQuery动画与特效用法总结》、《jquery选择器用法总结》及《jQuery常用插件及用法总结》
希望本文所述对大家jQuery程序设计有所帮助。