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 相关文章推荐
Extjs grid panel自带滚动条失效的解决方法
Sep 11 Javascript
用JS写的一个Ajax库(实例代码)
Aug 06 Javascript
AngularJS ng-repeat数组有重复值的解决方法
Oct 23 Javascript
微信小程序 loading(加载中提示框)实例
Oct 28 Javascript
AngularJS中transclude用法详解
Nov 03 Javascript
javascript简单进制转换实现方法
Nov 24 Javascript
使用Math.max,Math.min获取数组中的最值实例
Apr 25 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
Jul 12 Javascript
最基础的vue.js双向绑定操作
Aug 23 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
Jul 20 Javascript
如何在JavaScript中等分数组的实现
Dec 13 Javascript
关于JS中的作用域中的问题思考分享
Apr 06 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
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
PHP laravel中的多对多关系实例详解
2017/06/07 PHP
提交表单时执行func方法实现代码
2013/03/17 Javascript
JS在可编辑的div中的光标位置插入内容的方法
2014/11/20 Javascript
node.js中的fs.unlink方法使用说明
2014/12/15 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
2015/03/12 Javascript
jQuery添加和删除输入文本框标签代码
2016/05/20 Javascript
JS在浏览器中解析Base64编码图像
2017/02/09 Javascript
jQuery简易时光轴实现方法示例
2017/03/13 Javascript
JS中SetTimeout和SetInterval使用初探
2017/03/23 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
layui添加动态菜单与选项卡
2019/07/26 Javascript
基于layPage插件实现两种分页方式浅析
2019/07/27 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
Vue中引入svg图标的两种方式
2021/01/14 Vue.js
[00:48]食人魔魔法师至宝“金鹏之幸”全新模型和自定义特效展示
2019/12/19 DOTA
python中的装饰器详解
2015/04/13 Python
flask框架实现连接sqlite3数据库的方法分析
2018/07/16 Python
基于python3实现socket文件传输和校验
2018/07/28 Python
Python的argparse库使用详解
2018/10/09 Python
python3人脸识别的两种方法
2019/04/25 Python
python面试题之列表声明实例分析
2019/07/08 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
keras 解决加载lstm+crf模型出错的问题
2020/06/10 Python
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
Champs Sports加拿大:北美最大的以商场为基础的专业运动鞋和服装零售商之一
2018/05/01 全球购物
回馈慈善的设计师太阳镜:DIFF eyewear
2019/10/17 全球购物
给同事的道歉信
2014/01/11 职场文书
python制作图形界面的2048游戏, 基于tkinter
2021/04/06 Python
Python与C++中梯度方向直方图的实现
2022/03/17 Python
python 判断文件或文件夹是否存在
2022/03/18 Python
「约定的梦幻岛」作画发布诺曼生日新绘
2022/03/21 日漫
德劲DE1107指针试高灵敏度全波段收音机机评
2022/04/05 无线电
Go gorilla securecookie库的安装使用详解
2022/08/14 Golang