zoukankan      html  css  js  c++  java
  • 第7章 ASP.NET(MVC使用Ajax)

    MVC中使用Ajax

    A、        MVC中的Ajax

    B、        设置Ajax选项

    C、        生成Ajax链接

    1、使用内置,封装的mvc ajax系统,使用比较小,建议使用jQuery+ajax实现相同功能

    D、        Ajax回调

    1、         OnBegin:开始

    2、         OnSuccess:成功

    3、         OnFailure:失败

    4、         OnComplete:完成

    E、         MVC中使用json(重点)

    1、         在控制器添加json支持

    2、         在浏览器端处理json

    3、         在action方法里探测ajax请求

    4、         接受json数据

    结合第六章内容本章内运用Ajax实现产品数据加载

    一、到“Controllers/HomeController.cs”类,把”获取数据方法和设置数据注释掉,然后把“记录条数改成全局”,

            再编写“Ajax方法”

    1、如图所示(获取数据方法与设置数据注释)

    2、如图所示(记录条数改成全局

    3、如图所示(Ajax方法)

    代码示例:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    
    using LinqBLL;
    using LinqService;
    using MvcProduct.Models;
    namespace MvcProduct.Controllers
    {
        public class HomeController : Controller
        {
            ProductBll bll = new ProductBll();
            int pageSize = 4;  //设置记录条数
            public ActionResult Index()
            {
                ViewBag.Message = "欢迎使用 ASP.NET MVC!";
                return View();
            }
            ////获取产品
            //public ActionResult List() 
            //{
            //    List<Product> ps = bll.GetProduct();
            //    return View(ps);
            //}
            public ActionResult List(string cate,int page=1)
            {
                ProductBll ps = new ProductBll();
               
                //获取总记录数
                int recordCount = bll.GetRecordCount(cate);
                //获取数据
                //List<Product> lst = bll.GetProductByCateName(cate,
                //    (page - 1) * pageSize, pageSize);
    
                ProducrsListViewModel ViewModel = new ProducrsListViewModel
                {
                   // Producrs = lst, //设置数据
                    PagingInfo = new PagingInfo   //设置分页参数
                    {
                        CurrentIndex=page,
                        PageSize=pageSize,
                        RecordCount=recordCount
                    },
                    CurrentCategory=cate    //设置分类
                };
                return View(ViewModel);
            }
    
            //通过json返回体育产品信息信息
            public JsonResult ProductList(string cate, int page = 1)
            {
                List<Product> lst = bll.GetProductByCateName(cate,
                   (page - 1) * pageSize, pageSize);
                var formattedData = lst.Select(m => new
                {
                    ProductID = m.ProductID,
                    Image = m.Image,
                    Name = m.Name,
                    Price = m.Price
                });
                return Json(formattedData, JsonRequestBehavior.AllowGet);
            }
    
            public ActionResult About()
            {
                return View();
            }
        }
    }
    View Code

    二、完成后,到"Views/Home/List.cshtml"模板注释掉之前获取数据循环加载方法,运用Ajax替换并添加“div”用于显示数据

    1、如图所示(注释取数据循环加载方法)

    2、如图所示(Ajax方法)

     3、如图所示(参数)

    代码示例:

    @model MvcProduct.Models.ProducrsListViewModel
    
    @{
        ViewBag.Title = "List";
    }
    <h2>体育产品</h2>
    <hr />
    <script src="../../Scripts/jquery-1.7.1.js"></script>
    <script type="text/javascript">
        $(function () {
            var href = location.href; //获取当前页面的地址      
            $.ajax({
                url: "/Home/ProductList?cate=" + request("cate") + "&page=" + request("page"),
                type: "POST",
                contentType: "application/json;charset=utf-8",
                data: "",
                dataType: "json",
                success: function (data) {
                    var str = "";
                    $.each(data, function (i, product) {
                        str += "<div id='left'><img src='../../" + product.Image
                            + "'style='135px;height:155px;'/></div>";
                        str += "<div id='item'><h3>" + product.Name + "</h3>";              
                        str += "<h4>" + product.Price + "</h4>";
                        str += "<a href='/Cart/AddToCart?id=" + product.ProductID + "&returnUrl=" + href
                            + "<style='text-decoration:none;' data-id=" + product.ProductID + ">添加购物车</a>";
                        str += "</div><br/>";
                        str += "<hr style='border-style:inset'/>";
                    });
                    $("#productlist").html(str);
                },
                error: function (req, f, error) {
                    alert(error);
                }
            })
        });
        //获取浏览器参数
        function request(paras) {
            var url = location.href;
            var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&");
            var paraObj = {}
            for (i = 0; j = paraString[i]; i++) {
                paraObj[j.substring(0, j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=") + 1, j.length);
            }
            var returnValue = paraObj[paras.toLowerCase()];
            if (typeof (returnValue) == "undefined") {
                return "";
            } else {
                return returnValue;
            }
        }
    </script>
        <div id="productlist">
    
        </div>
    
    
    
    
      @*  @foreach (var p in Model.Producrs)
        {
           <div class="warp clearfix">
             <div id="left">
               <img alt="@p.Name" src="../../@p.Image" width="135" height="155" border="0" />
              </div> 
                 <div class="item">
                  <h3>@p.nDescription</h3><br />                   
                      @p.Category                     
                  <h4>@string.Format("{0:F}",p.Price)</h4><br />  
                      
                     @using (Html.BeginForm("AddToCart","Cart"))
                     {        
                         @Html.Hidden("Id",p.ProductID)  
                          @Html.Hidden("returnUrl",Request.Url.PathAndQuery)      
                        <input type="submit" value="加入购物车" />
                     }
                    </div>
                     </div>
                   <hr  style="border-style:inset"/>        
        }*@
    <div class="pager">
        @Html.PageLinks(Model.PagingInfo, x => Url.Action("List", new {page=x,cate=Model.CurrentCategory }))
    </div>
    View Code
  • 相关阅读:
    Linux下常用命令以及应用场景
    Java通过代理访问网络的几种方法
    Linux下模拟Http发送的Get和Post请求
    Postgresql常用函数整理
    java-日期Calendar类
    利用数组保存 6 个 Circle 对象,创建 Circle 对象时可传递半径,半 径值由 Math 类的 Random()方法产生( 10 以内,保持一位小数),分别求其面积 (四舍五入,保持两位小数)
    第十讲 Java 资源结构-api
    浅谈面向对象与女娲造人 (摘自 Nerxious)
    java-打印字母表
    java反射机制
  • 原文地址:https://www.cnblogs.com/xuyangyang/p/6432629.html
Copyright © 2011-2022 走看看