ASP.NET實現(xiàn)電影票信息的增刪查改功能
題目
1、使用Code First技術(shù)創(chuàng)建一個Movie數(shù)據(jù)模型。
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 string Rating { get; set; } //電影分級 }
2、使用MVC相關(guān)技術(shù)實現(xiàn)數(shù)據(jù)的列表顯示和新增功能。
3、完成數(shù)據(jù)的編輯、刪除、明細(xì)和條件查詢等功能。
4、完成如下查詢:
(1)查詢尚未上映電影的信息
(4)查詢票價在某個區(qū)間的電影信息
效果
(源碼在文章結(jié)尾)
主要涉及知識點
1、ASP.NET WEB MVC下的目錄結(jié)構(gòu)以及基礎(chǔ)編程
2、Linq查詢操作
3、Code First
4、各模板View的建立和使用
主要代碼
MovieController.cs
using ProjectThree.Models; using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Web; using System.Web.Mvc; namespace ProjectThree.Controllers { public class MovieController : Controller { MovieDBContext db = new MovieDBContext(); // GET: Movie public ActionResult Index(string movieOn, string movieGenre, string searchString, string lowPrice, string highPrice) { //初始化電影是否上映下拉 var GenreLst1 = new List<string>(); GenreLst1.Add("是"); GenreLst1.Add("否"); ViewBag.movieOn = new SelectList(GenreLst1); //初始化電影類型下拉 var GenreLst2 = new List<string>(); var GenreQry = from d in db.Movies orderby d.Genre select d.Genre; GenreLst2.AddRange(GenreQry.Distinct()); //去重 ViewBag.movieGenre = new SelectList(GenreLst2); var movies = from m in db.Movies select m; if (!String.IsNullOrEmpty(movieOn)) { DateTime dtNow = DateTime.Now; if (movieOn.Equals("是")) { movies = movies.Where(s => DateTime.Compare(dtNow, s.ReleaseDate) > 0); } else if (movieOn.Equals("否")) { movies = movies.Where(s => DateTime.Compare(dtNow, s.ReleaseDate) <= 0); } } if (!String.IsNullOrEmpty(movieGenre)) { movies = movies.Where(x => x.Genre == movieGenre); } if (!String.IsNullOrEmpty(searchString)) { movies = movies.Where(s => s.Title.Contains(searchString)); } if ((!String.IsNullOrEmpty(lowPrice)) && (!String.IsNullOrEmpty(highPrice))) { try { Decimal low = Decimal.Parse(lowPrice); Decimal high = Decimal.Parse(highPrice); if (high < low) { Response.Write("<script>alert('左邊價格不可大于右邊!');</script>"); } else { movies = movies.Where(s => s.Price >= low); movies = movies.Where(s => s.Price <= high); } } catch { Response.Write("<script>alert('必須輸入數(shù)字!');</script>"); return View(movies); } } return View(movies); } public ActionResult Create() { return View(); } [HttpPost] public ActionResult Create(Movie m) { if (ModelState.IsValid) { db.Movies.Add(m); db.SaveChanges(); return RedirectToAction("Index", "Movie"); } return View(m); } public ActionResult Delete(int? id) { Movie m = db.Movies.Find(id); if (m != null) { db.Movies.Remove(m); db.SaveChanges(); } return RedirectToAction("Index", "Movie"); } public ActionResult Edit(int id) { Movie stu = db.Movies.Find(id); return View(stu); } [HttpPost] public ActionResult Edit(Movie stu) { db.Entry(stu).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index", "Movie"); } } }
Movie.cs
using System; using System.ComponentModel.DataAnnotations; namespace ProjectThree.Models { public class Movie { [Display(Name = "電影編號")] public int ID { get; set; } //電影編號 [Display(Name = "電影名稱")] [Required(ErrorMessage = "必填")] [StringLength(60, MinimumLength = 3, ErrorMessage = "必須是[3,60]個字符")] public string Title { get; set; } //電影名稱 [Display(Name = "上映時間")] [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}",ApplyFormatInEditMode = true)] public DateTime ReleaseDate { get; set; } //上映時間 [Display(Name = "電影類型")] [Required] public string Genre { get; set; } //電影類型 [Display(Name = "電影票價")] [Range(1, 100)] [DataType(DataType.Currency)] public decimal Price { get; set; } //電影票價 [Display(Name = "電影分級")] [StringLength(5)] [Required] public string Rating { get; set; } //電影分級 } }
MovieDBContext.cs
using System.Data.Entity; namespace ProjectThree.Models { public class MovieDBContext : DbContext { public DbSet<Movie> Movies { get; set; } } }
Index.cshtml
@model IEnumerable<ProjectThree.Models.Movie> @{ ViewBag.Title = "Index"; } <p> @Html.ActionLink("新建", "Create") @using (Html.BeginForm("Index", "Movie", FormMethod.Get)) { <p> 電影是否上映:@Html.DropDownList("movieOn", "all") 電影類型:@Html.DropDownList("movieGenre", "all") 電影名稱:@Html.TextBox("SearchString") 票價區(qū)間:@Html.TextBox("lowPrice")~@Html.TextBox("highPrice") <input type="submit" value="查詢" /> </p> } </p> <table class="table"> <tr> <th> @Html.DisplayNameFor(model => model.Title) </th> <th> @Html.DisplayNameFor(model => model.ReleaseDate) </th> <th> @Html.DisplayNameFor(model => model.Genre) </th> <th> @Html.DisplayNameFor(model => model.Price) </th> <th> @Html.DisplayNameFor(model => model.Rating) </th> <th></th> </tr> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.Title) </td> <td> @Html.DisplayFor(modelItem => item.ReleaseDate) </td> <td> @Html.DisplayFor(modelItem => item.Genre) </td> <td> @Html.DisplayFor(modelItem => item.Price) </td> <td> @Html.DisplayFor(modelItem => item.Rating) </td> <td> @Html.ActionLink("編輯", "Edit", new { id=item.ID }) | @Html.ActionLink("詳情", "Details", new { id=item.ID }) | @Html.ActionLink("刪除", "Delete", new { id=item.ID }, new { onclick = "return confirm('確認(rèn)刪除嗎?')" }) </td> </tr> } </table>
Create.cshtml
@model ProjectThree.Models.Movie @{ ViewBag.Title = "Create"; } @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="form-horizontal"> <h4>Movie</h4> <hr /> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) <div class="form-group"> @Html.LabelFor(model => model.Title, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Title, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.ReleaseDate, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.ReleaseDate, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.ReleaseDate, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Genre, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Genre, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Genre, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Price, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Price, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Price, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Rating, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Rating, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Rating, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <input type="submit" value="Create" class="btn btn-default" /> </div> </div> </div> } <div> @Html.ActionLink("Back to List", "Index") </div>
Edit.cshtml
@model ProjectThree.Models.Movie @{ ViewBag.Title = "Edit"; } <h2>Edit</h2> @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="form-horizontal"> <h4>Movie</h4> <hr /> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) @Html.HiddenFor(model => model.ID) <div class="form-group"> @Html.LabelFor(model => model.Title, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Title, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.ReleaseDate, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.ReleaseDate, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.ReleaseDate, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Genre, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Genre, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Genre, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Price, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Price, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Price, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Rating, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Rating, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Rating, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <input type="submit" value="Save" class="btn btn-default" /> </div> </div> </div> } <div> @Html.ActionLink("Back to List", "Index") </div>
源碼地址
http://download.csdn.net/detail/double2hao/9710754
以上所述是小編給大家介紹的ASP.NET實現(xiàn)電影票信息的增刪查改功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
asp.net網(wǎng)站底部的版權(quán)信息實現(xiàn)代碼且可維護(hù)
網(wǎng)站底部的版權(quán)信息在特殊情況還是比較重要的所以在實現(xiàn)的時候一定要盡可能的做到可維護(hù)性,接下來將介紹一些技巧可達(dá)到可維護(hù)效果,感興趣的你可不要錯過了哈2013-02-02使用CustomValidator自定義驗證控件檢查是否有對ListBox控件選擇
在網(wǎng)頁前端處,我們放置ListBox控件,在數(shù)據(jù)提交前,檢查用戶是否有對此控件進(jìn)行選擇?小編將介紹使用Javascript與CustomValidator自定義驗證控件來檢查感興趣的朋友可以了解下2013-01-01GridView導(dǎo)出Excel實現(xiàn)原理與代碼
使用GridView來展示數(shù)據(jù)庫表,幾乎沒對GridView的格式做什么設(shè)定,從配置文件中加載SQL,跑出數(shù)據(jù)就直接綁定到GridView,接下來介紹導(dǎo)出Excel的功能感興趣的朋友可以參考下2013-01-01visual studio 2017企業(yè)版本安裝(附序列號)
這篇文章主要介紹了visual studio 2017企業(yè)版本安裝,文末為大家分享了序列號,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03ASP.NET設(shè)計網(wǎng)絡(luò)硬盤之刪除文件夾實現(xiàn)代碼
對于不再需要的文件/文件夾用戶有權(quán)限做刪除處理。這一節(jié)就介紹如何實現(xiàn)這一功能2012-10-10在 .NET Framework 2.0 中未處理的異常導(dǎo)致基于 ASP.NET 的應(yīng)用程序意外退出
如果在 Microsoft .NET Framework 2.0 上構(gòu)建的基于 Microsoft ASP.NET 的應(yīng)用程序中引發(fā)未處理的異常,該應(yīng)用程序?qū)馔馔顺?。如果出現(xiàn)這個問題,不會在應(yīng)用程序日志中記錄了解此問題所必需的異常信息。2009-11-11.net?core利用PdfSharpCore操作PDF實例教程
操作pdf是我們?nèi)粘i_發(fā)中經(jīng)常遇到的功能,下面這篇文章主要給大家介紹了關(guān)于.net?core利用PdfSharpCore操作PDF實例的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12