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 isPrototypeOf和hasOwnProperty使用区别
Mar 04 Javascript
js 可拖动列表实现代码
Dec 13 Javascript
JS Loading功能的简单实现
Nov 29 Javascript
jQuery中:lt选择器用法实例
Dec 29 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
Mar 10 Javascript
js实现移动端微信页面禁止字体放大
Feb 16 Javascript
canvas红包照片实例分享
Feb 28 Javascript
微信小程序表单验证错误提示效果
May 19 Javascript
React 高阶组件入门介绍
Jan 11 Javascript
JS中的模糊查询功能
Dec 08 Javascript
vue实现两个组件之间数据共享和修改操作
Nov 12 Javascript
浅谈Ant Design Pro 菜单自定义 icon
Nov 17 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
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
php AJAX实例根据邮编自动完成地址信息
2008/11/23 PHP
关于初学PHP时的知识积累总结
2013/06/07 PHP
解析如何在PHP下载文件名中解决乱码的问题
2013/06/20 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
PHP发送AT指令实例代码
2016/05/26 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
2019/02/28 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
event对象的方法 兼容多浏览器
2009/06/27 Javascript
javascript中将Object转换为String函数代码 (json str)
2012/04/29 Javascript
javascript弹出层输入框(示例代码)
2013/12/11 Javascript
使用node.js 制作网站前台后台
2014/11/13 Javascript
基于JavaScript实现生成名片、链接等二维码
2015/09/20 Javascript
JavaScript Length 属性的总结
2015/11/02 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
javascript仿百度输入框提示自动下拉补全
2016/01/07 Javascript
NodeJs读取JSON文件格式化时的注意事项
2016/09/25 NodeJs
Javascript中关于Array.filter()的妙用详解
2016/12/04 Javascript
Vue2.0实现组件数据的双向绑定问题
2018/03/06 Javascript
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
一篇文章入门Python生态系统(Python新手入门指导)
2015/12/11 Python
Python实现七彩蟒蛇绘制实例代码
2018/01/16 Python
pandas系列之DataFrame 行列数据筛选实例
2018/04/12 Python
django基于存储在前端的token用户认证解析
2019/08/06 Python
Django对models里的objects的使用详解
2019/08/17 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
2019/10/28 Python
在python shell中运行python文件的实现
2019/12/21 Python
python对输出的奇数偶数排序实例代码
2020/12/04 Python
目前不被任何主流浏览器支持的CSS3属性汇总
2014/07/21 HTML / CSS
Clarks西班牙官方在线商店:clarks鞋
2019/05/03 全球购物
internal修饰符起什么作用
2013/12/16 面试题
外企测试工程师面试题
2015/02/01 面试题
护士节活动总结
2014/08/29 职场文书
国际贸易实训总结
2015/08/03 职场文书
六年级上册《闻官军收河南河北》的教学设计
2019/11/15 职场文书
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android