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 相关文章推荐
基础的prototype.js常用函数及其用法
Mar 10 Javascript
jQuery 源码分析笔记(4) Ready函数
Jun 02 Javascript
javascript同页面多次调用弹出层具体实例代码
Aug 16 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
Aug 01 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
May 09 Javascript
解析JavaScript的ES6版本中的解构赋值
Jul 28 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
Jan 21 Javascript
jQuery实现简单的回到顶部totop功能示例
Oct 16 jQuery
详解Vue 事件修饰符capture 的使用
Dec 29 Javascript
jQuery中内容过滤器简单用法示例
Mar 31 jQuery
vue打包相关细节整理(小结)
Sep 28 Javascript
浅谈JavaScript作用域
Dec 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
Discuz 6.0+ 批量注册用户名
2009/09/13 PHP
ecshop 批量上传(加入自定义属性)
2012/03/20 PHP
PHP获取当前url的具体方法全面解析
2013/11/26 PHP
php中通过DirectoryIterator删除整个目录的方法
2015/03/13 PHP
PHP Echo字符串的连接格式
2016/03/07 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
地址栏上的一段语句,改变页面的风格。(教程)
2008/04/02 Javascript
js兼容标准的表格变色效果
2008/06/28 Javascript
基于prototype扩展的JavaScript常用函数库
2010/11/30 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
2012/11/11 Javascript
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
express的中间件cookieParser详解
2014/12/04 Javascript
JS中artdialog弹出框控件之提交表单思路详解
2016/04/18 Javascript
Javascript类型系统之undefined和null浅析
2016/07/13 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
vue.js 获取当前自定义属性值
2017/06/01 Javascript
vue.js框架实现表单排序和分页效果
2017/08/09 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
iview同时验证多个表单问题总结
2018/09/29 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
2018/02/24 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
2018/12/19 Python
Apache部署Django项目图文详解
2019/07/30 Python
python GUI库图形界面开发之PyQt5信号与槽基础使用方法与实例
2020/03/06 Python
Python发送邮件封装实现过程详解
2020/05/09 Python
PyQt5 控件字体样式等设置的实现
2020/05/13 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
HTML5 Canvas入门学习教程
2016/03/17 HTML / CSS
迎八一活动主题
2014/01/31 职场文书
初中生自我评价
2014/02/01 职场文书
水毁工程实施方案
2014/04/01 职场文书
加强作风建设工作总结
2014/10/23 职场文书
导游词之南京栖霞山
2019/10/18 职场文书
Nginx解决403 forbidden的完整步骤
2021/04/01 Servers
python 提取html文本的方法
2021/05/20 Python