MVC Ajax Helper或Jquery异步加载部分视图


Posted in Javascript onNovember 29, 2015

废话不多说了,直接给大家贴代码了。

Model:

namespace MvcApplication1.Models
{
 public class Team
 {
  public string Preletter { get; set; }
  public string Name { get; set; }
 }
}

通过jQuery异步加载部分视图

Home/Index.cshtml视图中:

@{
 ViewBag.Title = "Index";
 Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Index</h2>
<div>
 <a href="#" id="a">通过jQuery异步</a> <br/>
</div>
<div id="result">
</div>
@section scripts
{
 <script type="text/javascript">
  $(function() {
   $('#a').click(function() {
    $.ajax({
     url: '@Url.Action("Index","Home")',
     data: { pre: 'B' },
     type: 'POST',
     success: function(data) {
      $('#result').empty().append(data);
     }
    });
    return false;
   });
  });
 </script>
}

HomeController控制器中:

using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using MvcApplication1.Models;
namespace MvcApplication1.Controllers
{
 public class HomeController : Controller
 {
  public ActionResult Index()
  {
   return View();
  }
  [HttpPost]
  public ActionResult Index(string pre)
  {
   var result = GetAllTeams().Where(t => t.Preletter == pre).ToList();
   ViewBag.msg = "通过jQuery异步方式到达这里~~";
   return PartialView("TeamY", result);
  }
  private List<Team> GetAllTeams()
  {
   return new List<Team>()
   {
    new Team(){Name = "巴西队", Preletter = "B"},
    new Team(){Name = "克罗地亚队", Preletter = "K"},
    new Team(){Name = "巴拉圭", Preletter = "B"},
    new Team(){Name = "韩国", Preletter = "K"}
   };
  }
 }
}

部分视图TeamY.cshtml:

@model IEnumerable<MvcApplication1.Models.Team> 
@{
 var result = string.Empty;
 foreach (var item in Model)
 {
  result += item.Name + ",";
 }
}
@ViewBag.msg.ToString()
<br/>
@result.Substring(0,result.Length - 1)

通过MVC Ajax Helper异步加载部分视图

Home/Index.cshtml视图中需要引用jquery.unobtrusive-ajax.js文件,从控制器返回的强类型部分视图内容呈现到UpdateTargetId指定的div中。

@{
 ViewBag.Title = "Index";
 Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Index</h2>
<div>
 @Ajax.ActionLink("通过MVC Ajax Helper","Load","Home", new {pre = "K"}, new AjaxOptions(){UpdateTargetId = "result1"})
</div>
<div id="result1">
</div>

HomeController控制器中:

using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using MvcApplication1.Models;

namespace MvcApplication1.Controllers
{
 public class HomeController : Controller
 {
  public ActionResult Index()
  {
   return View();
  }
  public ActionResult Load(string pre)
  {
   var result = GetAllTeams().Where(t => t.Preletter == pre).ToList();
   ViewBag.msg = "通过MVC Ajax Helper到达这里~~";
   return PartialView("TeamY", result);
  }
  private List<Team> GetAllTeams()
  {
   return new List<Team>()
   {
    new Team(){Name = "巴西队", Preletter = "B"},
    new Team(){Name = "克罗地亚队", Preletter = "K"},
    new Team(){Name = "巴拉圭", Preletter = "B"},
    new Team(){Name = "韩国", Preletter = "K"}
   };
  }
 }
}

部分视图和上一种方式一样。

页面刷新的方式加载部分视图方法包括:

Html.RenderPartial()
Html.RenderAction()

下面给大家介绍MVC中实现部分内容异步加载

action中定义一个得到结果集的方法

public ActionResult GetItemTree(string title, int itemid, int? page)
  {
   pp = new PagingParam(page ?? 1, VConfig.WebConstConfig.PageSize);
   Common.Page.PagedList<Entity.Res_Item_Resource_R> res_Item_Resource_R = iResourceService.GetRes_Item_Resource_RByItemId(itemid, pp);
   ViewData["res_Item_Resource_R"] = res_Item_Resource_R;
   res_Item_Resource_R.AddParameters = new System.Collections.Specialized.NameValueCollection();
   res_Item_Resource_R.AddParameters.Add("title", title);
   res_Item_Resource_R.AddParameters.Add("itemid", itemid.ToString());

   ViewResult vr = new ViewResult
   {
    ViewData = ViewData,
    MasterName = "",
   };
   return vr;
  }

    在主页面使用下面jquery代码异步调用上面的action

$(function () {
  var id = '<%=itemid %>';
  $.ajax({
   type: "POST",
   url: "/Student/GetItemTree",
   data: { title: '<%=Model.Name %>', itemid: id, page: 1 },
   beforeSend: function (data) { //取回数据前
    $("#itemTree").html('<span style="padding:5">数据加载中...</span>');
   },
   error: function (data) { //发生错误时
//    debugger;
   },
   success: function (data) { //成功返回时
    $("#itemTree").html(data);
   }
  });

   最后在分部视图GetItemTree.ascx中写上你要返回的数据结构即可
   注意一点就是,如果涉及到分页,要用AJAX分页方式

<div style="float: left">
  <%=Html.AjaxPager(resItemResourceBefore, "itemTree", "GetItemTree", "Student")%>
 </div>
Javascript 相关文章推荐
JavaScript/jQuery 表单美化插件小结
Feb 14 Javascript
JavaScript forEach()遍历函数使用及介绍
Jul 08 Javascript
浅析jQuery中使用$所引发的问题
May 29 Javascript
jquery对象和DOM对象的相互转换详解
Oct 18 Javascript
ES6新特性之函数的扩展实例详解
Apr 01 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
Jan 26 Javascript
vue2 全局变量的设置方法
Mar 09 Javascript
bootstrap与pagehelper实现分页效果
Dec 29 Javascript
详解vue 路由跳转四种方式 (带参数)
Apr 28 Javascript
JavaScript进制转换实现方法解析
Jan 18 Javascript
JavaScript实现字符串与HTML格式相互转换
Mar 17 Javascript
24个ES6方法解决JS实际开发问题(小结)
May 31 Javascript
Javascript闭包实例详解
Nov 29 #Javascript
jQuery实现图片上传和裁剪插件Croppie
Nov 29 #Javascript
javascript高级编程之函数表达式 递归和闭包函数
Nov 29 #Javascript
javascript实现拖动元素交换位置
Nov 29 #Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
Nov 29 #Javascript
通用javascript代码判断版本号是否在版本范围之间
Nov 29 #Javascript
jQuery如何使用自动触发事件trigger
Nov 29 #Javascript
You might like
《星际争霸重制版》兵种对比图鉴
2020/03/02 星际争霸
造就帕卡马拉的帕卡斯是怎么被发现的
2021/03/03 咖啡文化
php程序之die调试法 快速解决错误
2009/09/17 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
2014/06/21 PHP
smarty的section嵌套循环用法示例
2016/05/28 PHP
php多线程并发实现方法
2016/09/30 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
2017/02/08 PHP
swoole_process实现进程池的方法示例
2018/10/29 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
PHP实现简易图形计算器
2020/08/28 PHP
prototype 学习笔记整理
2009/07/17 Javascript
javascript四舍五入函数代码分享(保留后几位)
2013/12/10 Javascript
jquery插件推荐浏览器嗅探userAgent
2014/11/09 Javascript
使用jquery.form.js实现图片上传的方法
2016/05/05 Javascript
jquery实现全选和全不选功能效果的实现代码【推荐】
2016/05/05 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
js计算系统当前日期是星期几的方法
2016/07/14 Javascript
nodejs中使用HTTP分块响应和定时器示例代码
2017/03/19 NodeJs
解决Mac node版本升级失败的问题
2018/05/16 Javascript
如何用webpack4带你实现一个vue的打包的项目
2018/06/20 Javascript
Python使用py2exe打包程序介绍
2014/11/20 Python
Python实现设置windows桌面壁纸代码分享
2015/03/28 Python
python+opencv实现霍夫变换检测直线
2020/10/23 Python
Python基本数据结构之字典类型dict用法分析
2019/06/08 Python
python实现合并多个list及合并多个django QuerySet的方法示例
2019/06/11 Python
如何利用python web框架做文件流下载的实现示例
2020/06/02 Python
python中的测试框架
2020/11/13 Python
中粮集团旗下食品网上购物网站:我买网
2016/09/22 全球购物
美国背景检查、公共记录和人物搜索网站:BeenVerified
2018/02/25 全球购物
澳大利亚购买最佳炊具品牌网站:Cookware Brands
2019/02/16 全球购物
车辆工程专业求职信
2014/06/14 职场文书
受伤赔偿协议书
2014/09/24 职场文书
驻村工作简报
2015/07/20 职场文书
巾帼建功标兵先进事迹材料
2016/02/29 职场文书
Mysql官方性能测试工具mysqlslap的使用简介
2021/05/21 MySQL
mysql insert 存在即不插入语法说明
2022/03/25 MySQL