码迷,mamicode.com
首页 > Web开发 > 详细

MVC学习小结[数据绑定和分页]

时间:2018-09-08 11:54:38      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:获取   data   format   tst   amp   href   完成   turn   控制   

一、项目搭建完成后,在控制器里边写入方法:例如

public  ActionResult   Index(){

    var  model=new Product(){id=1,name="产品一"};

    return  View(model);

}

二、根据这个方法创建视图:

可以右键点击方法里边任意位置,添加视图,或者在Views里边手动创建。

三、这两部比较简单,主要是数据绑定,这里主要说一下:

   1.在视图上绑定数据,一般使用 ViewBag,ViewData,TempData等

     ViewBag可以直接定义需要的变量和数据。在视图页面可以直接使用。无需类型转换。例如:方法里写入:ViewBag.aa = "测试数据一";  视图直接使用@ViewBag.aa即可

     ViewData一般传递对象时,在视图页需要类型转换和非空判断。传递一般数据直接使用即可。例如:方法里写入:ViewData["ee"] = "测试数据二";视图直接使用@ViewData["ee"]即可

     TempData主要用于页面跳转的传递数据,如果您想从a页面传一个值到b,再从b到c,在c页面使用。这里注意,如果TempData的值用过了,则失效了,只能用一次,传递对象也需要类型转换和非空判断。使用方法和            ViewData一样。

   2.如果方法返回一个对象,则需要加个类型转换,比如:

   在试图页面加上@model  Product  ,然后页面才可以使用,使用的时候:用@Model.name即可

        如果有循环,则需要用@if(集合!=null&&集合.Count>0){ @foreach(var item in  集合){  //这里写上html并绑定数据  }}

        在使用时有时候想在类里边输入内容:可以这样写:<div  class="aa  @Html.Raw("active")"></div> 这样就加了一个active类,@Html.Raw()是原样输出内容

        如果您想获取一个bool类型,或者string类型,如果直接用@Model.Param.Name获取值,有时候会出错哦,原样输出后修改一下。你可以这样:

           string类型加一个引号: var name= "@Html.Raw(@Model.Param.Name)";   bool类型重写一下: var isDesc = @Html.Raw(Model.Param.IsDesc? "true" : "false");

   3.也面路径地址绑定方法:@Url.Action(“方法名”,“控制器名”,new {id=1}),第三个参数非必选。

   4.如果您想在母版页上绑定数据,一般需要在当前控制器上先继承一个baseController,baseController再继承Controller ,在baseController里边写上需要的数据,使用ViewBag传递,由于是继承了baseController,所以每一个方法都会经过这个ViewBag,所以母版页可以直接使用。如果您不这样,您需要在每一个方法里写上ViewBag.这里需要注意的是:baseController里边写ViewBag的时候必须写在Controller可以重写的方法里边,不然没用。

   5.如果你把所有的样式和js放在首页可以能导致名称相同出现各种样式问题。那么您需要把单个页面对应的js和css放到单独的那个页面。怎么写呢,看下边例子:

    在母版页写上:@RenderSection("name", required)   这里的两个参数有必要说一下,第一个自己随便定一个名字标识,第二个就是说是否必须在子页面重写,true或false

     比如:母版: @RenderSection("style", false)   子页面:@section style{  里边把需要的样式拉过来即可 }

   6.这里写一个小技巧,如果在页面上需要使用传递的参数,可以在方法里直接把参数赋值到返回视图的对象上。

四、这里写一下mvc上使用的一个分页,使用的是mvcPager

   1.    由于这个分页需要使用PageList<Product>,所以在创建类的时候把需要分页的部分用PageList<Product>,比如:

       public   class   Model{

                 public  string  Type{get;set;}

                 public  string Name{get;set;}

                 public  PageList<Product>   GoodsList{get;set;}

        }

   2.由于是分页,必须传递一个页码,所以方法要这样写:

      public   ActionResult  GetList(int  pageIndex = 1){

    Model  model=new Model();

              int size = 10;//每页10条
              int offset = (pageIndex - 1) * 10 + 1; //每页开始索引

      var list = goodsBll.Where(m => m.Status == 1).Orderby(“AddTime”).ToList(offset, size + offset - 1);

              int AllCount=goodsBll.Where(m => m.Status == 1).AllCount();//获取总条数

              model.GoodsList = new PagedList<Goods>(list , pageIndex, size, AllCount);//后边四个参数,第一个集合,第二个页码,第三个每页条数,第四个总条数

              return  View(model);

      }

     3.视图页面:首先要把类型转换一下 @model  Model

        在需要分页的地方把数据循环绑定之后,加上下边的代码即可:

  <div class="goods_list_container">
    @if (Model.GoodsList != null)
    {
      foreach (var item in @Model.GoodsList)
      {

           <i class="bold"> @item.Name </i>

      }
    }
    <div class="text-right">
      @Html.Pager(Model.GoodsList, new PagerOptions { PageIndexParameterName = "pageIndex", PrevPageText = "上页", NextPageText = "下页", FirstPageText = "首页", LastPageText = "尾页", CssClass =       "pagination", PagerItemsSeperator = "", CurrentPagerItemWrapperFormatString = "<li class=\"active\"><a href=\"#\">{0}</a></li>", PagerItemWrapperFormatString = "<li>{0}</li>" })
    </div>
  </div>

MVC学习小结[数据绑定和分页]

标签:获取   data   format   tst   amp   href   完成   turn   控制   

原文地址:https://www.cnblogs.com/lymkpds/p/9607993.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!