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 相关文章推荐
用Jquery实现多级下拉框无刷新的联动
Dec 22 Javascript
jquery append()方法与html()方法的区别及使用介绍
Aug 01 Javascript
js实例属性和原型属性示例详解
Nov 23 Javascript
javascript中String对象的slice()方法分析
Dec 20 Javascript
js实现Form栏显示全格式时间时钟效果代码
Aug 19 Javascript
Javascript页面跳转常见实现方式汇总
Nov 28 Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
May 17 Javascript
Vue.js实现的表格增加删除demo示例
May 22 Javascript
layui点击导航栏刷新tab页的示例代码
Aug 14 Javascript
JavaScript实现无限级递归树的示例代码
Mar 29 Javascript
Vue开发中遇到的跨域问题及解决方法
Feb 11 Javascript
vue中实现回车键登录功能
Feb 19 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
全国FM电台频率大全 - 20 广西省
2020/03/11 无线电
深入了解PHP类Class的概念
2012/06/14 PHP
php 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
2013/10/29 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
2016/10/13 PHP
php使用curl实现ftp文件下载功能
2017/05/16 PHP
PHP实现登录注册之BootStrap表单功能
2017/09/03 PHP
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
2009/10/25 Javascript
javascript 快速排序函数代码
2012/05/30 Javascript
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
图片img的src不变让浏览器重新加载实现方法
2013/03/29 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
2015/11/27 Javascript
javascript定义类和类的实现实例详解
2015/12/01 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
Js面试算法详解
2018/04/08 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
详解如何配置vue-cli3.0的vue.config.js
2018/08/23 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
举例讲解Python中的Null模式与桥接模式编程
2016/02/02 Python
详解python的几种标准输出重定向方式
2016/08/15 Python
python使用正则表达式的search()函数实现指定位置搜索功能
2017/11/10 Python
Python中支持向量机SVM的使用方法详解
2017/12/26 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
2019/02/21 Python
Python使用selenium + headless chrome获取网页内容的方法示例
2019/10/16 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
Django 限制访问频率的思路详解
2019/12/24 Python
PyQt5实现画布小程序
2020/05/30 Python
Python 找出英文单词列表(list)中最长单词链
2020/12/14 Python
Space NK美国站:英国高端美妆护肤商城
2017/05/22 全球购物
美国克罗格超市在线购物:Kroger
2019/06/21 全球购物
经典c++面试题三
2015/07/08 面试题
国家励志奖学金获奖感言
2014/01/09 职场文书
国旗下的讲话演讲稿
2014/05/08 职场文书
Django+Celery实现定时任务的示例
2021/06/23 Python
MySql数据库触发器使用教程
2022/06/01 MySQL