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

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

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>

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

时间: 2024-11-13 08:39:06

MVC学习小结[数据绑定和分页]的相关文章

MVC学习小结

自从说到项目要用MVC来做后,就开始咋进了MVC的学习热潮中,从学习提高班录制视频到自己找一些资料和Demo,反反复复学习中终于算是对MVC有了一定的了解了,下面来分享下自己学习到的一些知识! 1.学习历程 <MVC开发实战>学习导图 小结:这本书前前后后看了有三遍,从刚开始的不懂,硬着头皮看:到第二遍的理解以至到第三遍,算是对MVC整体有了一个很好的把握.并且这本书讲解的算是挺通俗易懂的,除了枯燥,还是很容易懂的.能把这本书明白,对MVC就会由初步的了解. <MVC开发学习实录>

MVC学习之数据绑定:表单数据绑定

在MVC中.如果想在代码中获得提交的表单中的数据.有两种方法: 1.使用FormCollection 2.使用Model 接下来我们就具体介绍下: 首先先介绍使用FormCollection来取得整个表单的信息 前端页面: @{ ViewBag.Title = "GetFormInfo"; } <h2>GetFormInfo</h2> @using (Html.BeginForm()){ <strong>用户姓名:</strong><

《Pro AngularJS》学习小结-01

<Pro AngularJS>该书以一个SportsStore案例为主线铺开. 一.开发环境设置 该书中所用的server开发环境是Deployed,从来没听说过,而且作者也说该server没什么人用,我干脆弃用之.其他的环境包括 NodeJS--这个必须装 karma--测试环境,前期还没有用到,以后认真研究,毕竟AngularJS一大特点是Unit Test bootstrap--这个现在应该普遍使用了,O(∩_∩)O webstorm--现在唯一支持AngularJS插件的IDE 我基本

前端MVC学习总结——AngularJS验证、过滤器

前端MVC学习总结--AngularJS验证.过滤器 目录 一.验证 二.过滤器 2.1.内置过滤器 2.1.1.在模板中使用过滤器 2.1.2.在脚本中调用过滤函数 2.2.自定义过滤器 三.指令(directive) 3.1.支持AngularJS功能的指令 3.1.1.应用与模块(ng-app) 3.1.2.控制器(ng-Controller) 3.1.3.包含(ng-Include) 3.1.4.不绑定(ngNonBindable) 3.2.扩展表单元素的指令 3.2.1.ng-opti

Spring MVC学习之三:处理方法返回值的可选类型

转自:http://www.cnblogs.com/cuizhf/p/3810652.html ———————————————————————————————————————————————————————————— spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void.下面将对具体的一一进行说明: ModelAndView @RequestMapping("/show1") publ

ASP.NET MVC 学习

ASP.NET MVC 学习 一. 学习MVC基础 MVC的三个字母分别代表什么意思? M—Model(模型).V—View(视图).C—Controller(控制器) VS2010 中建立MVC应用程序会自动生成哪些文件夹? Controllers – 放置Controller 类,处理URL 请求. Models – 放置业务实体类,表示和操作数据. Views – 放置UI 模板文件,负责展示输出结果. Scripts – 放置Javascript 类库文件和.js 文件. Content

MVC区域小结

MVC3一直在学习,项目中有的时候也会用到,博客园也一直逛,想写点什么东西,可惜我这个人平时都很懒,理论层面的东西自己写不来,还是来点实际的简单入门的博客,对自己总结能力是一种提升,当然也希望对没有使用过区域的人有所帮助. 为什么要有区域? MVC本身提倡的就是关注点分离,控制器控制业务逻辑,模型用于读取数据,视展示展示页面,这样不管是对于开发者本身还是对于后来维护项目的开发者来说都是有极大好处的,能很开熟悉项目的业务,而不会像层次不清晰,代码不规范,逻辑混乱的项目,提升开发效率.但是当项目本身

Spring MVC 学习笔记(二):@RequestMapping用法详解

一.@RequestMapping 简介 在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置 <servlet>     <servlet-name>servletName</servlet-name>     <servlet-class>ServletClass</servlet-class> </servlet>

ASP.NET MVC学习系列(二)-WebAPI请求

继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现数据调用. 继续使用上一文章中的示例,添加一个index.html页面,添加对jquery的引用. 一.无参数Get请求 一般的get请求我们可以使用jquery提供的$.get() 或者$.ajax({type:"get"}) 来实现: 请求的后台Action方法仍为上篇文章中的GetU