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读取中文COOKIE的解决办法
Feb 15 Javascript
js+FSO遍历文件夹下文件并显示
Mar 07 Javascript
JavaScript 常用函数库详解
Oct 21 Javascript
有关JavaScript的10个怪癖和秘密分享
Aug 28 Javascript
JavaScript地图拖动功能SpryMap的简单实现
Jul 17 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
Jan 02 Javascript
jQuery的观察者模式详解
Dec 22 Javascript
javascript验证香港身份证的格式或真实性
Feb 07 Javascript
微信小程序通过保存图片分享到朋友圈功能
May 24 Javascript
vue表单自定义校验规则介绍
Aug 28 Javascript
通过图带你深入了解vue的响应式原理
Jun 21 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
Nov 25 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
德生PL550的电路分析
2021/03/02 无线电
文件上传的实现
2006/10/09 PHP
解析php curl_setopt 函数的相关应用及介绍
2013/06/17 PHP
php读取目录所有文件信息dir示例
2014/03/18 PHP
php中出现空白页的原因及解决方法汇总
2014/07/08 PHP
跟我学Laravel之视图 &amp; Response
2014/10/15 PHP
php注册登录系统简化版
2020/12/28 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
Javascript技术栈中的四种依赖注入小结
2016/02/27 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
AngularJS表格添加序号的方法
2017/03/03 Javascript
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
Vue.js 中的 $watch使用方法
2017/05/25 Javascript
AngularJS的ng-click传参的方法
2017/06/19 Javascript
css和js实现弹出登录居中界面完整代码
2017/11/26 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
详解关于Vuex的action传入多个参数的问题
2019/02/22 Javascript
Layer.js实现表格溢出内容省略号显示,悬停显示全部的方法
2019/09/16 Javascript
解决layer.confirm选择完之后消息框不消失的问题
2019/09/16 Javascript
vuex存储token示例
2019/11/11 Javascript
jquery实现进度条状态展示
2020/03/26 jQuery
ant-design-vue中tree增删改的操作方法
2020/11/03 Javascript
vue vant中picker组件的使用
2020/11/03 Javascript
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
Numpy之文件存取的示例代码
2018/08/03 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
Python判断telnet通不通的实例
2019/01/26 Python
django form和field具体方法和属性说明
2020/07/09 Python
HTML5 transform三维立方体实现360无死角三维旋转效果
2014/08/22 HTML / CSS
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
计算机大学生的自我评价
2013/10/15 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
2014年度个人工作总结
2014/11/07 职场文书
六一儿童节开幕词
2015/01/29 职场文书