MVC编程-简单电影界面

1、新建MVC项目

2、创建数据模型类,右键Models文件夹,选择 添加Movie.cs类,编写类,创建数据库上下文类

public class Movie
    {
        public int ID { get; set; }
        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; }
    }

3、创建数据库连接串,在Web.config文件中添加:

…
<connectionStrings>
    <add name="MovieDBContext"    
             connectionString="Data Source=(LocalDb)\Mssqllocaldb;
                                           AttachDbFilename=|DataDirectory|\Movies.mdf;
                                           Integrated Security=True"
             providerName="System.Data.SqlClient" />
</connectionStrings>

//name取值要用数据库上下文类名
//使用LocalDb服务器(每个主机都不同,可以查看自己的服务器)
//数据库名称为Movies
…

4、新建空控制器,MoviesController,添加Action如下:

public class MoviesController : Controller
{
        public ActionResult Index()
        {
            return View(db.Movies.ToList());    //这里传递的是数据集合给视图
            //db.Movies.ToList() 返回类型为IEnumerable<MVCMovie.Models.Movie>
        }
        public ActionResult Create()
        {
            return View();
        }
}

5、创建两个视图Index.cshtml和Create.cshtml(可以选择用模板创建)

 

 6、添加一个提交Create的Action,添加一个同名为CreateAction,用 [HttpPost] 标识:

public class MoviesController : Controller
{       private MovieDBContext db = new MovieDBContext();
        public ActionResult Create()
        {
            return View();
        }
        [HttpPost]        //处理post请求
        [ValidateAntiForgeryToken]                 
        //防止跨站请求伪造攻击(CSRF:Cross-Site Request Forgery)
        public ActionResult Create(Movie movie)   //参数对象将自动接收视图传递过来的数据
        {   
            db.Movies.Add(movie);
            db.SaveChanges();
            return RedirectToAction("Index");
        }
}

7、添加三个Action, 分别是Edit,Delete和Details,再添加一个提交Edit的Action和一个提交Delete的Action(同上)

public ActionResult Edit(int? id)   //此处将 int id 改为 int? id更安全一些
        {
            if (id == null)       //id为空值时
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Movie movie = db.Movies.Find(id);    //查找给定主键的实体
            if (movie == null)
            {
                return HttpNotFound();
            }
            return View(movie);       
        }

        [HttpPost]                          //处理post请求
        [ValidateAntiForgeryToken]          //防止跨站请求伪造攻击
        public ActionResult Edit(Movie movie)
        {
            if (ModelState.IsValid)
            {
                db.Entry(movie).State = EntityState.Modified;   //修改一下状态
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(movie);          //如果没有通过服务器端验证则返回重新修改
        }

        public ActionResult Delete(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Movie movie = db.Movies.Find(id);
            if (movie == null)
            {
                return HttpNotFound();
            }
            return View(movie);
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Delete(int id)
        {
            Movie movie = db.Movies.Find(id);
            db.Movies.Remove(movie);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        public ActionResult Details(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Movie movie = db.Movies.Find(id);
            if (movie == null)
            {
                return HttpNotFound();
            }
            return View(movie);
        }

 8、条件查询界面(上方的电影类型和电影名称查询)

 

9、 index界面需添加html元素

<p>
    @Html.ActionLink("Create New", "Create")
    @using ( Html.BeginForm( "Index", "Movies", FormMethod.Get ) )  //使用Get方法提交数据
    {
        <p>        
            电影类型:@Html.DropDownList("movieGenre", "all")  
            电影名称:@Html.TextBox("SearchString")
   //生成的html:<input id="SearchString" name="SearchString" type="text" value="" />
            <input type="submit" value="查询" />
        </p>
    }
</p>

//…

 

10、修改MovieController中index的代码

public ActionResult Index(string movieGenre,string searchString)
        {
            var GenreLst = new List<string>();
            var GenreQry = from d in db.Movies orderby d.Genre select d.Genre;
            GenreLst.AddRange(GenreQry.Distinct());
            ViewBag.movieGenre = new SelectList(GenreLst);

            var movies = from m in db.Movies select m;
            if(!String.IsNullOrEmpty(movieGenre))
            { movies = movies.Where(x => x.Genre == movieGenre);  }
            if (!String.IsNullOrEmpty(searchString))
            {
                movies = movies.Where(s => s.Title.Contains(searchString));
            }
            return View(movies);

        }

 

运行效果图:

 

 

 

代码比较简单哈,希望对大家有帮助!

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值