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 相关文章推荐
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
Apr 27 Javascript
js option删除代码集合
Nov 12 Javascript
JavaScript中链式调用之研习
Apr 07 Javascript
Ubuntu 11.10 安装Node.js的方法
Nov 30 Javascript
利用毫秒减值计算时长的js代码
Sep 22 Javascript
js简单实现让文本框内容逐个字的显示出来
Oct 22 Javascript
JavaScript将XML转成JSON的方法
Mar 12 Javascript
使用Webpack提高Vue.js应用的方式汇总(四种)
Jul 10 Javascript
详解node child_process模块学习笔记
Jan 24 Javascript
JS简单实现动态添加HTML标记的方法示例
Apr 08 Javascript
layui--js控制switch的切换方法
Sep 03 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
Nov 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
PHP 简易输出CSV表格文件的方法详解
2013/06/20 PHP
php常用数学函数汇总
2014/11/21 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
2019/05/09 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
php+js实现倒计时功能
2014/06/02 Javascript
Jquery通过JSON字符串创建JSON对象
2014/08/24 Javascript
jquery中checkbox全选失效的解决方法
2014/12/26 Javascript
Javascript数组循环遍历之forEach详解
2016/11/07 Javascript
boostrapTable的refresh和refreshOptions区别浅析
2017/01/22 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
Vue内部渲染视图的方法
2019/09/02 Javascript
详解vue中$nextTick和$forceUpdate的用法
2019/12/11 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
使用nodejs实现JSON文件自动转Excel的工具(推荐)
2020/06/24 NodeJs
vue中的计算属性和侦听属性
2020/11/06 Javascript
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
python利用requests库进行接口测试的方法详解
2018/07/06 Python
不管你的Python报什么错,用这个模块就能正常运行
2018/09/14 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
2019/01/08 Python
Python学习笔记之While循环用法分析
2019/08/14 Python
Django中密码的加密、验密、解密操作
2019/12/19 Python
在django admin中配置搜索域是一个外键时的处理方法
2020/05/20 Python
HTML5: Web 标准最巨大的飞跃
2008/10/17 HTML / CSS
HTML5+CSS3实现机器猫
2016/10/17 HTML / CSS
英国男士时尚网站:Dandy Fellow
2018/02/09 全球购物
招聘单位介绍信
2014/01/14 职场文书
预备党员政审材料
2014/02/04 职场文书
党员创先争优承诺书
2014/03/26 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2014年社区工作总结
2014/11/18 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
副校长2015年教育教学工作总结
2015/07/27 职场文书
导游词之南昌滕王阁
2019/11/29 职场文书
Python四款GUI图形界面库介绍
2022/06/05 Python
tree shaking对打包体积优化及作用
2022/07/07 Java/Android
keepalived + nginx 实现高可用方案
2022/12/24 Servers