首页 > web前端 > js教程 > MVC Ajax Helper或Jquery异步加载部分视图_jquery

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-05-16 15:29:10
原创
1681 人浏览过

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

Model:

1

2

3

4

5

6

7

8

namespace MvcApplication1.Models

{

 public class Team

 {

  public string Preletter { get; set; }

  public string Name { get; set; }

 }

}

登录后复制

通过jQuery异步加载部分视图

Home/Index.cshtml视图中:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

@{

 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控制器中:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

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:

1

2

3

4

5

6

7

8

9

10

11

@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中。

1

2

3

4

5

6

7

8

9

10

@{

 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控制器中:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

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中定义一个得到结果集的方法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

public ActionResult GetItemTree(string title, int itemid, int&#63; page)

  {

   pp = new PagingParam(page &#63;&#63; 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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

$(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分页方式

1

2

3

<div style="float: left">

  <%=Html.AjaxPager(resItemResourceBefore, "itemTree", "GetItemTree", "Student")%>

 </div>

登录后复制

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板