这里面之所以没有Sql语句但是也可以对数据库进行数据操作的原因就是Entity Framework。Entity Framework有三种模式,这里用的是Models模式。

  网上有太多的.net MVC教程了,我就直接写一个我喜欢的版本得了。

先新建一个Models,起名为Movie.cs

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data.Entity;
  4. using System.Linq;
  5. using System.Web;
  6.  
  7. namespace Mvc.Models
  8. {
  9. public class Movie
  10. {
  11. public int ID { get; set; } //电影ID
  12. public string Title { get; set; } //电影标题
  13. public DateTime ReleaseDate { get; set; } //电影上映时间
  14. public string Genre { get; set; } //电影类型
  15. public decimal Price { get; set; } //电影票价格
  16.  
  17. }
  18.  
  19. public class MovieDBContext : DbContext
  20. {
  21. public DbSet<Movie> Movies { get; set; } //DbSet是类型设置的意思
  22. }
  23.  
  24. }

这个Movie类里面的代码还是很好理解的吧,下面那个DbSet就是类型设置的意思,就是Movies是Movie类型的。ok,写完这个Model类之后,我们开始写controller,新建一个controller,命名为MovieController,但是步骤跟我来:

高级选项里这样,那个母版页你们自己加不加都行:

OK,加完这个Movie的controller之后,你看看Views文件夹是不是多了好多个View,现在其实就可以运行了,不过我们还要加一个数据库,在web.config里面这样写:

  1. <connectionStrings>
  2. <add name="MovieDBContext" providerName="System.Data.SqlClient" connectionString="Server=KTY;Database=shuyunquan;Uid=sa;Pwd=123456"/>
  3. </connectionStrings>

这样写就行了,至于数据库的一些操作语句就不劳你费心了,已经全部封装好了.....

现在来运行:

在地址栏里面输入Movie,然后你就可以进行些许操作了....

现在,我突然想搜索,我想搜数据了,先来一个简单的,直接在url框进行搜索

把MovieController里面的Index方法修改成这样:

  1. public ActionResult Index(string search)
  2. {
  3. var movies = from m in db.Movies select m;
  4. if (!String.IsNullOrEmpty(search))
  5. {
  6. movies = movies.Where(s => s.Title.Contains(search));
  7. }
  8.  
  9. return View(movies);
  10. }

其他的地方都不需要修改,我来讲讲这代码是什么意思。

Index方法带了一个参数,就是我想搜的东西的名字呗,下面的是一个LinQ语句,这个就当做sql sever语句来理解,就是把db.Movies里面的数据(等同于数据库里面的数据)全部取出来,给movies。然后下一个就是判断你输入的参数是不是空的,不是空或者NUll的话就执行语句,这个语句的意思呢其实就是Sql server查询的意思,这用到了lambda表达式,其实这一条语句等同于movies=select * from Movies where %search%

  最后,返回那里改一下返回值。其他地方不需要修改什么,我们直接运行,然后自己新建几条数据方便查找:

我新建了三条数据,现在来查找:

我查了一下许嵩,就出来了第一条,这个只要是包含了“许嵩”字符的都可以。ok完成了。下面来个高级一点的啦~~

------------------------------------------------------我是高级内容-----------------------------------------------------

还是查询,不过呢,这次我要搞一个UI出来,我要根据类别和标题两部分来查询

MovieController里面的Index方法这样写:

  1. public ActionResult Index(string movieGenre,string search)
  2. {
  3. var GenreList = new List<string>(); //定义一个list数组
  4. var GenreQry = from d in db.Movies orderby d.Genre select d.Genre;//定义一个变量存放Genre值
  5. GenreList.AddRange(GenreQry.Distinct()); //存到数组里面
  6. ViewBag.movieGenre = new SelectList(GenreList); //存到viewBag里面传给view界面
  7.  
  8. var movies = from m in db.Movies select m;
  9. if (!String.IsNullOrEmpty(search))
  10. {
  11. movies = movies.Where(s => s.Title.Contains(search));
  12. }
  13. if (!String.IsNullOrEmpty(movieGenre))
  14. {
  15. movies = movies.Where(x => x.Genre == movieGenre);
  16. }
  17.  
  18. return View(movies);
  19. }

添加了一些代码,在注释里面解释的差不多了,不过这里我有一个东东不明白,为什么GenreQry这个变量可以存这么多东西???

  我们在Index.cshtml里面呢添加几个UI来

  1. <p>
  2. @Html.ActionLink("Create New", "Create")
  3. @using (Html.BeginForm()) //搞了一个表单
  4. {
  5. <p>
  6. Genre:@Html.DropDownList("movieGenre", "All") //下拉列表选择
  7. Title:@Html.TextBox("search") //textbox
  8. <input type="submit" value="搜索" /> //搜索button
  9. </p>
  10. }
  11.  
  12. </p>

  然后来预览一下吧,ctrl+shift+b编译,然后浏览器界面ctrl+F5刷新:

诺,想怎么筛选怎么筛选~

最后....真的是最后...来加一个校验机制吧~熊孩子或者熊大人不听话,偏偏新建的时候不按照格式来怎么办?多半是装的,打一顿就好了~咳咳~~当然是要加一个校验机制,来判断人输入的对不对,修改我们的Movie类:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel.DataAnnotations; //添加这个引用
  4. using System.Data.Entity;
  5. using System.Linq;
  6. using System.Web;
  7.  
  8. namespace Mvc.Models
  9. {
  10. public class Movie
  11. {
  12. public int ID { get; set; } //电影ID
  13. [StringLength(,MinimumLength=)] //这就是校验机制
  14. public string Title { get; set; } //电影标题
  15. public DateTime ReleaseDate { get; set; } //电影上映时间
  16. [StringLength()]
  17. public string Genre { get; set; } //电影类型
  18. [Range(,)]
  19. [DataType(DataType.Currency)] //类型是货币类型
  20. public decimal Price { get; set; } //电影票价格
  21.  
  22. }
  23.  
  24. public class MovieDBContext : DbContext
  25. {
  26. public DbSet<Movie> Movies { get; set; }
  27. }
  28.  
  29. }

就是大概这样的格式,但是这个例子我运行不成功,暂时不知道原因,暂留。

.net MVC入门的更多相关文章

  1. 25、ASP.NET MVC入门到精通——Spring.net-业务层仓储

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 上一节,我们已经把项目框架的雏形搭建好了,那么现在我来开始业务实现,在业务实现的过程当中,不断的来完善我们现有的框架. 1.假设我们来做一个 ...

  2. 26、ASP.NET MVC入门到精通——后台管理区域及分离、Js压缩、css、jquery扩展

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 有好一段时间没更新博文了,最近在忙两件事:1.看书,学习中...2.为公司年会节目做准备,由于许久没有练习双截棍了,难免生疏,所以现在临时抱 ...

  3. asp.net mvc 入门资料

    七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC http://www.cnblogs.com/powertoolsteam/p/MVC_one.html 无废话MVC入门教程 ...

  4. ASP.NET MVC 入门8、ModelState与数据验证

    原帖地址:http://www.cnblogs.com/QLeelulu/archive/2008/10/08/1305962.html ViewData有一个ModelState的属性,这是一个类型 ...

  5. ASP.NET MVC 入门系列教程

    ASP.NET MVC 入门系列教程 博客园ASP.NET MVC 技术专题 http://kb.cnblogs.com/zt/mvc/ 一个居于ASP.NET MVC Beta的系列入门文章,有朋友 ...

  6. Spring MVC 入门教程示例 (一)

    今天和大家分享下  Spring MVC  入门教程 首先还是从 HelloWorld  web 工程开始 -------------------------- 1.首先创建一个Maven Web工程 ...

  7. Asp.net MVC入门视频教程

    编程开发 > Asp.net视频教程 > Asp.net MVC入门视频教程 > 1.传统web处理方式和mvc处理方式 上传日期:2014-08-16 10:02:45  相关摘要 ...

  8. [转]ASP.NET MVC 入门8、ModelState与数据验证

    ViewData有一个ModelState的属性,这是一个类型为ModelStateDictionary的ModelState类型的字典集合.在进行数据验证的时候这个属性是比较有用的.在使用Html. ...

  9. 005.Getting started with ASP.NET Core MVC and Visual Studio -- 【VS开发asp.net core mvc 入门】

    Getting started with ASP.NET Core MVC and Visual Studio VS开发asp.net core mvc 入门 2017-3-7 2 分钟阅读时长 本文 ...

  10. MVC入门教程

    MVC入门系列教程-视频版本,已入驻51CTO学院,文本+视频学效果更好哦.视频链接地址如下: 点我查看视频.另外,针对该系列教程博主提供有偿技术支持,群号:226090960,群内会针对该教程的问题 ...

随机推荐

  1. C++ STL 学习笔记__(8)map和multimap容器

    10.2.9 Map和multimap容器 map/multimap的简介 ²  map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. ² ...

  2. libgdx自制简易Flappy Bird

    Flappy Bird,好吧,无需多说.今天年初不知咋的,一下子就火了,而且直接跃居榜首,在ios和android平台都是如此,实在难以理解.传说其作者每天收入能达到5w刀,着实碉堡了... 好吧,咱 ...

  3. Flask学习-Flask基础之WSGI

    一.WSGI为什么会出现? 在学习一个东西之前,我们肯定想知道:它为什么会出现?那么,WSGI为什么会出现呢? 我们知道,部署一个web应用,经常需要使用nginx.apache或者IIS等web服务 ...

  4. flask_admin 笔记三 客户化视图

    客户化视图1, model数据模型参数配置1)配置全局参数内置的ModelView类很适合快速入门. 但是,您需要配置其功能以适合您的特定型号. 这是通过设置ModelView类中提供的配置属性的值来 ...

  5. rabbitMQ教程(三)一篇文章看懂rabbitMQ

    一.rabbitMQ是什么: RabbitMQ,遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上. 学过websocket的来理解rabbitMQ应该是 ...

  6. unity2D以最小的角度旋转到目标方向(y方向为角色的主方向)

    一.使用向量原理转换到目标方向 为了让角色的自身y转向目标方向,并且以最小角度旋转,要点是获得当前方向与目标方向的叉值,从而判断应该旋转的方向 float rotateSpeed; //相对目标位置运 ...

  7. CEPH FILESYSTEM

    参考文档: CEPH FILESYSTEM:http://docs.ceph.com/docs/master/cephfs/ CephFS best practices:http://docs.cep ...

  8. SimpleDateFormat的一些常用用法

    /** SimpleDateFormat函数语法: G 年代标志符 y 年 M 月 d 日 h 时 在上午或下午 (1~12) H 时 在一天中 (0~23) m 分 s 秒 S 毫秒 E 星期 D ...

  9. 数据库——SQL数据单表查询

    数据查询   语句格式 SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>] … FROM <表或视图名>[,<表或视图名&g ...

  10. 12th final 发布评价 I

    1.  约跑App——nice!:这次使用了摄像进行讲解,相比于上次能够更准确地向大家讲解,整体效果更好了,而且很好地针对同学提出的bug进行修改,能够在并不是很熟悉的领域做到这个程度已经很不容易了, ...