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程序设计有所帮助。