JQuery异步加载PartialView的方法


Posted in Javascript onJune 07, 2016

本文实例讲述了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="/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程序设计有所帮助。

Javascript 相关文章推荐
Javascript 的addEventListener()及attachEvent()区别分析
May 21 Javascript
JQuery动态添加Select的Option元素实现方法
Aug 29 Javascript
手机软键盘弹出时影响布局的解决方法
Dec 15 Javascript
详解AngularJS验证、过滤器、指令
Jan 04 Javascript
js实现颜色阶梯渐变效果(Gradient算法)
Mar 21 Javascript
实例详解JSON取值(key是中文或者数字)方式
Aug 24 Javascript
详解webpack3如何正确引用并使用jQuery库
Aug 26 jQuery
JS同步、异步、延迟加载的方法
May 05 Javascript
Vue实现数据表格合并列rowspan效果
Nov 30 Javascript
vue+axios实现post文件下载
Sep 25 Javascript
vue总线机制(bus)知识点详解
May 10 Javascript
js实现随机点名器精简版
Jun 29 Javascript
基于JS实现无缝滚动思路及代码分享
Jun 07 #Javascript
Bootstrap学习笔记之css样式设计(1)
Jun 07 #Javascript
jQuery hover事件简单实现同时绑定2个方法
Jun 07 #Javascript
PassWord输入框代码分享
Jun 07 #Javascript
Bootstrap学习笔记之css组件(3)
Jun 07 #Javascript
JavaScript判断数组重复内容的两种方法(推荐)
Jun 06 #Javascript
JavaScript数组的定义及数字操作技巧
Jun 06 #Javascript
You might like
分页显示Oracle数据库记录的类之一
2006/10/09 PHP
PHP求最大子序列和的算法实现
2011/06/24 PHP
ThinkPHP让分页保持搜索状态的方法
2014/07/02 PHP
微信公众平台DEMO(PHP)
2016/05/04 PHP
javascript function、指针及内置对象
2009/02/19 Javascript
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
js实现可折叠展开的手风琴菜单效果
2015/09/07 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
2016/04/30 Javascript
javascirpt实现2个iframe之间传值的方法
2016/06/30 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
JavaScript实现省市县三级级联特效
2017/05/16 Javascript
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
简单说说angular.json文件的使用
2018/10/29 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
Python中正则表达式的用法实例汇总
2014/08/18 Python
python实现复制整个目录的方法
2015/05/12 Python
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
分享PyCharm的几个使用技巧
2019/11/10 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
OpenCV 表盘指针自动读数的示例代码
2020/04/10 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
2020/04/30 Python
python从PDF中提取数据的示例
2020/10/30 Python
爱尔兰灯和灯具网上商店:Lights.ie
2018/03/26 全球购物
岗位竞聘书范文
2014/03/31 职场文书
幼儿园小班评语大全
2014/04/17 职场文书
英语教研活动总结
2014/07/02 职场文书
2014年安全生产工作总结
2014/11/13 职场文书
人事文员岗位职责
2015/02/04 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
SQL实现LeetCode(176.第二高薪水)
2021/08/04 MySQL