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 Array扩展实现代码
Oct 14 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
Jul 31 Javascript
屏蔽相应键盘按钮操作
Mar 10 Javascript
一个JavaScript防止表单重复提交的实例
Oct 21 Javascript
Bootstrap每天必学之弹出框(Popover)插件
Apr 25 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
Dec 07 Javascript
基于JavaScript实现带数据验证和复选框的表单提交
Aug 23 Javascript
canvas轨迹回放功能实现
Dec 20 Javascript
js脚本中执行java后台代码方法解析
Oct 11 Javascript
微信小程序开发打开另一个小程序的实现方法
May 17 Javascript
vue 中this.$set 动态绑定数据的案例讲解
Jan 29 Vue.js
(开源)微信小程序+mqtt,esp8266温湿度读取
Apr 02 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
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
Windows 下安装 swoole 图文教程(php)
2017/06/05 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
php实现构建排除当前元素的乘积数组方法
2018/10/06 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
Dom在ajax技术中的作用说明
2010/10/25 Javascript
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
jquery实现文字由下到上循环滚动的实例代码
2013/08/09 Javascript
JS中getYear()和getFullYear()区别分析
2014/07/04 Javascript
jquery实现动态操作select选中
2015/02/11 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
深入解析Vue 组件命名那些事
2017/07/18 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
2018/08/22 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
JS实现进度条动态加载特效
2020/03/25 Javascript
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
Python datetime时间格式化去掉前导0
2014/07/31 Python
Python实现3行代码解简单的一元一次方程
2014/08/18 Python
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
2015/05/06 Python
Python实现控制台中的进度条功能代码
2017/12/22 Python
纯python实现机器学习之kNN算法示例
2018/03/01 Python
python实现五子棋人机对战游戏
2020/03/25 Python
Django rest framework jwt的使用方法详解
2019/08/08 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2020/02/12 Python
Pycharm最常用的快捷键及使用技巧
2020/03/05 Python
jupyter notebook 参数传递给shell命令行实例
2020/04/10 Python
Parts Express:音频、视频和扬声器的第一来源
2017/04/25 全球购物
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
网络工程专业自荐信范文
2014/03/16 职场文书
2015年药店工作总结
2015/04/20 职场文书
恋恋笔记本观后感
2015/06/16 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python
《金肉人》米特&《航海王》阿鹤声优松岛实因胰脏癌去世 享寿81岁
2022/04/13 日漫