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 相关文章推荐
XMLHttpRequest处理xml格式的返回数据(示例代码)
Nov 21 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
Feb 12 Javascript
JavaScript更改字符串的大小写
May 07 Javascript
浅谈JavaScript的push(),pop(),concat()方法
Jun 03 Javascript
js实现九宫格拼图小游戏
Feb 13 Javascript
vue的基本用法与常见指令
Aug 15 Javascript
Vue 处理表单input单行文本框的实例代码
May 09 Javascript
JavaScript判断浏览器运行环境的详细方法
Jun 30 Javascript
Vue项目环境搭建详细总结
Sep 26 Javascript
es6数组的flat(),flatMap()函数用法实例分析
Apr 18 Javascript
使用Vant完成Dialog弹框案例
Nov 11 Javascript
Javascript实现单选框效果
Dec 09 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
神族 PROTOSS 概述
2020/03/14 星际争霸
用IE远程创建Mysql数据库的简易程序
2006/10/09 PHP
php实现的仿阿里巴巴实现同类产品翻页
2009/12/11 PHP
php 5.3.5安装memcache注意事项小结
2011/04/12 PHP
一个PHP缓存类代码(附详细说明)
2011/06/09 PHP
PHP QRCODE生成彩色二维码的方法
2016/05/19 PHP
php.ini中date.timezone设置详解
2016/11/20 PHP
RGB颜色值转HTML十六进制(HEX)代码的JS函数
2009/04/25 Javascript
js获取单选框或复选框值及操作
2012/12/18 Javascript
JQuery for与each性能比较分析
2013/05/14 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
基于jQuery的ajax方法封装
2016/07/14 Javascript
轻松掌握JavaScript装饰者模式
2016/08/27 Javascript
详解如何较好的使用js
2016/12/16 Javascript
js中数组插入、删除元素操作的方法
2017/02/15 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
vue全局使用axios的方法实例详解
2018/11/22 Javascript
JS轮播图的实现方法2
2020/08/25 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
wepy--用vantUI 实现上弹列表并选择相应的值操作
2020/11/03 Javascript
Python  连接字符串(join %)
2008/09/06 Python
21行Python代码实现拼写检查器
2016/01/25 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
Python中动态检测编码chardet的使用教程
2017/07/06 Python
python网络应用开发知识点浅析
2019/05/28 Python
python logging 日志的级别调整方式
2020/02/21 Python
Python loguru日志库之高效输出控制台日志和日志记录
2020/03/07 Python
Python numpy多维数组实现原理详解
2020/03/10 Python
python 解决pycharm运行py文件只有unittest选项的问题
2020/09/01 Python
五种Python转义表示法
2020/11/27 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
法国一家多品牌成衣精品中/高档商店:Graduate Store
2019/08/28 全球购物
致800米运动员广播稿
2014/02/16 职场文书
无锡灵山大佛导游词
2015/02/09 职场文书
MySQL数据管理操作示例讲解
2022/12/24 MySQL