本文實例講述了JQuery異步加載PartialView的方法。分享給大家供大家參考,具體如下:
需求:頁面上有dropdown之類的控件,當選擇里面不同值的時候,下面關聯的內容跟著改變。
思路:把與 dropdown關聯的會改變的內容放到PartialView(ascx)里,用JQuery綁定dropdown的change事件,當選擇值改變時,用JQuery ajax請求與PartialView相關的Action,得到數據后講取到的內容覆蓋原來的內容。
實現:
Model 類:
public class User { public string UserName { get; set; } public int Age { get; set; } public int UserID { get; set; } public static List<User> GetUsers() { List<User> userList = new List<User>(); User user = null; user = new User(); user.UserID = 1; user.UserName = "小明"; user.Age = 20; userList.Add(user); user = new User(); user.UserID = 2; user.UserName = "小紅"; user.Age = 21; userList.Add(user); user = new User(); user.UserID = 3; user.UserName = "小強"; user.Age = 22; userList.Add(user); return userList; } public static User GetUserById(int userId) { return GetUsers().SingleOrDefault(u=>u.UserID==userId); } }
我們的PartialView:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MvcApplication2.Models.User>" %> <div> <%if (Model != null) {%> 用戶名:<%=Model.UserName%><br /> 年齡:<%=Model.Age%> <%} %> </div>
主頁面:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcApplication2.Models.User>" %> <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> Index </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <h2>Index</h2> <%=Html.DropDownList("users", ViewData["users"] as List<SelectListItem>)%> <div id="userDetails"> <%Html.RenderPartial("UserDetails", Model); %> </div> </asp:Content> <asp:Content ID="Content3" ContentPlaceHolderID="HeadMeta" runat="server"> <script language="javascript" src="http://www.gimoo.net/Scripts/user.js" type="text/javascript"></script> </asp:Content>
Controller類:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using MvcApplication2.Models; namespace MvcApplication2.Controllers { public class UserController : Controller { public ActionResult Index() { List<SelectListItem> userIdList = new List<SelectListItem>(); foreach (MvcApplication2.Models.User item in MvcApplication2.Models.User.GetUsers()) { userIdList.Add(new SelectListItem { Text = item.UserName,Value = item.UserID.ToString()}); } ViewData["users"] = userIdList; MvcApplication2.Models.User user = MvcApplication2.Models.User.GetUsers().FirstOrDefault(); return View(user); } public PartialViewResult UserDetails(int? userId) { MvcApplication2.Models.User user = null; if (userId == null) { user = MvcApplication2.Models.User.GetUsers().FirstOrDefault(); } else { user = MvcApplication2.Models.User.GetUserById(userId.Value); } return PartialView(user); } } }
我們需要在Master頁里指定我們的PartialView對應的Action路徑,這樣實現:
在Head里加上如下代碼:
<script language="javascript" type="text/javascript"> mySite = { actions : { userDetails: '<%=Url.Action("UserDetails","User")%>' } }; </script>
我們對應的JS代碼:
$(document).ready(function () { $("#users").change(function () { dropDownChange(); }); }); function dropDownChange() { var userId = $("#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程序設計有所幫助。