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 相关文章推荐
JS应用之禁止抓屏、复制、打印
Feb 21 Javascript
利用js判断浏览器类型(是否为IE,Firefox,Opera浏览器)
Nov 22 Javascript
AngularJS表单和输入验证实例
Nov 02 Javascript
mui上拉加载功能实例详解
Apr 13 Javascript
JS实现多张图片预览同步上传功能
Jun 23 Javascript
JS运动改变单物体透明度的方法分析
Jan 23 Javascript
详解Vue项目中实现锚点定位
Apr 24 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
Aug 15 Javascript
layui 富文本编辑器和textarea值的相互传递方法
Sep 18 Javascript
微信小程序canvas截取任意形状的实现代码
Jan 13 Javascript
Vue-cli3多页面配置详解
Mar 22 Javascript
JS实现点击掉落特效
Jan 29 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
php中大括号作用介绍
2012/03/22 PHP
PHP常用正则表达式集锦
2014/08/17 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
2015/03/02 PHP
php通过获取头信息判断图片类型的方法
2015/06/26 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
swoole锁的机制代码实例讲解
2021/03/04 PHP
javascript动画之圆形运动,环绕鼠标运动作小球
2010/07/20 Javascript
jQuery之end()和pushStack()使用介绍
2012/02/07 Javascript
jQuery文本框(input textare)事件绑定方法教程
2013/04/24 Javascript
js 浏览本地文件夹系统示例代码
2013/10/24 Javascript
JS记录用户登录次数实现代码
2014/01/15 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
基于JavaScript实现网页倒计时自动跳转代码
2015/12/28 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
2017/04/17 jQuery
详解Vue 开发模式下跨域问题
2017/06/06 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
2017/06/29 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
webpack多入口文件页面打包配置详解
2018/01/09 Javascript
require.js 加载过程与使用方法介绍
2018/10/30 Javascript
Vue事件修饰符native、self示例详解
2019/07/09 Javascript
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
python ddt实现数据驱动
2018/03/14 Python
pycharm2020.1.2永久破解激活教程,实测有效
2020/10/29 Python
纽约通行卡:The New York Pass(免费游览纽约90多个景点)
2017/07/29 全球购物
REN Clean Skincare官网:英国本土有机护肤品牌
2019/02/23 全球购物
节电标语大全
2014/06/23 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
详解JavaScript中的执行上下文及调用堆栈
2021/04/29 Javascript
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python
python实现自定义日志的具体方法
2021/05/28 Python
一定要知道的 25 个 Vue 技巧
2021/11/02 Vue.js
Python简易开发之制作计算器
2022/04/28 Python
微信小程序实现轮播图指示器
2022/06/25 Javascript