• .net MVC入门


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

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

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

    using System;
    using System.Collections.Generic;
    using System.Data.Entity;
    using System.Linq;
    using System.Web;
    
    namespace Mvc.Models
    {
        public class Movie
        {
            public int ID { get; set; }                     //电影ID
            public string Title { get; set; }               //电影标题
            public DateTime ReleaseDate { get; set; }       //电影上映时间
            public string Genre { get; set; }               //电影类型
            public decimal Price { get; set; }              //电影票价格
    
        }
    
        public class MovieDBContext : DbContext
        {
            public DbSet<Movie> Movies { get; set; }        //DbSet是类型设置的意思
        }
    
    }

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

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

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

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

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

    现在来运行:

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

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

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

     public ActionResult Index(string search)
            {
                var movies = from m in db.Movies select m;
                if (!String.IsNullOrEmpty(search))
                {
                    movies = movies.Where(s => s.Title.Contains(search));
                }
    
                return View(movies);
            }

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

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

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

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

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

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

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

    MovieController里面的Index方法这样写:

    public ActionResult Index(string movieGenre,string search)
            {
                var GenreList = new List<string>();   //定义一个list数组
                var GenreQry = from d in db.Movies orderby d.Genre select d.Genre;//定义一个变量存放Genre值
                GenreList.AddRange(GenreQry.Distinct());  //存到数组里面
                ViewBag.movieGenre = new SelectList(GenreList);   //存到viewBag里面传给view界面
    
                var movies = from m in db.Movies select m;
                if (!String.IsNullOrEmpty(search))
                {
                    movies = movies.Where(s => s.Title.Contains(search));
                }
                 if (!String.IsNullOrEmpty(movieGenre))
                {
                    movies = movies.Where(x => x.Genre == movieGenre);
                }
    
                return View(movies);
            }

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

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

    <p>
        @Html.ActionLink("Create New", "Create")
        @using (Html.BeginForm())    //搞了一个表单
        {
            <p>
                Genre:@Html.DropDownList("movieGenre", "All")  //下拉列表选择
                Title:@Html.TextBox("search")                  //textbox
                <input type="submit" value="搜索" />            //搜索button
            </p>
        }
    
    </p>                

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

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

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

    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;           //添加这个引用
    using System.Data.Entity;
    using System.Linq;
    using System.Web;
    
    namespace Mvc.Models
    {
        public class Movie
        {
            public int ID { get; set; }                     //电影ID
            [StringLength(20,MinimumLength=3)]              //这就是校验机制
            public string Title { get; set; }               //电影标题
            public DateTime ReleaseDate { get; set; }       //电影上映时间
            [StringLength(20)]
            public string Genre { get; set; }               //电影类型
            [Range(0,3000)]
            [DataType(DataType.Currency)]                   //类型是货币类型
            public decimal Price { get; set; }              //电影票价格
    
        }
    
        public class MovieDBContext : DbContext
        {
            public DbSet<Movie> Movies { get; set; }
        }
    
    }

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

  • 相关阅读:
    系统程序员成长计划并发(二)(下)
    Web开发必知的八种隔离级别
    国产Android视频,Broncho A1
    Android中的BatteryService及相关组件
    Struts2输出XML格式的Result
    系统程序员成长计划并发(三)(上)
    入选”第一期中国最受欢迎50大技术博客”
    Broncho团队招聘应届毕业生(包括大四学生) 2名
    系统程序员成长计划并发(三)(下)
    WordPress MailUp插件‘Ajax’函数安全绕过漏洞
  • 原文地址:https://www.cnblogs.com/yunquan/p/7445078.html
Copyright © 2020-2023  润新知