zoukankan      html  css  js  c++  java
  • MVC Movie App

    ylbtech- ASP.NET MVC:MVC Movie App

       功能描述:MVC Movie App

    2,TechnologyAndTheEnvironment(技术与环境)

    操作系统:

    windows

    开发语言:

    C#

    开发框架:

    ASP.NET MVC 3.0

    数据库:

     

    开发软件:

    Microsoft Visual Studio 2010

     开发技术

     ASP.NET MVC 4(Razor)

    3,DatabaseDesign(数据库设计)

     

    4,MVC

     

    4,Models

     /Models/Movie.cs

    using System;
    using System.Data.Entity; //命名空间包含提供对实体框架的核心功能的访问的类。
    using System.ComponentModel.DataAnnotations; //命名空间提供定义 ASP.NET MVC 和 ASP.NET 数据控件的类的特性。
    
    namespace MvcMovie.Models
    {
        public class Movie {
            public int ID { get; set; }
    
            [Required(ErrorMessage = "Title is required")]
            public string Title { get; set; }
    
            [Required(ErrorMessage = "Date is required")]
            [DisplayFormat(DataFormatString = "{0:d}")]
            public DateTime ReleaseDate { get; set; }
    
            [Required(ErrorMessage = "Genre must be specified")]
            public string Genre { get; set; }
    
            [Required(ErrorMessage = "Price Required")]
            [Range(1, 100, ErrorMessage = "Price must be between $1 and $100")]
            [DisplayFormat(DataFormatString = "{0:c}")]
            public decimal Price { get; set; }
    
            [StringLength(5)]
            public string Rating { get; set; }
        }
    
        public class MovieDBContext : DbContext
        {
            public DbSet<Movie> Movies { get; set; }
        }
    }
    View Code

    /Models/MovieUbtializer.cs

    using System;
    using System.Collections.Generic;
    using System.Data.Entity;
    
    namespace MvcMovie.Models {
        public class MovieInitializer : DropCreateDatabaseIfModelChanges<MovieDBContext> {
            protected override void Seed(MovieDBContext context) {
                var movies = new List<Movie> {  
      
                     new Movie { Title = "When Harry Met Sally",   
                                 ReleaseDate=DateTime.Parse("1989-1-11"),   
                                 Genre="Romantic Comedy",  
                                 Rating="G",  
                                 Price=7.99M},  
    
                         new Movie { Title = "Ghostbusters ",   
                                 ReleaseDate=DateTime.Parse("1984-3-13"),   
                                 Genre="Comedy",  
                                  Rating="G",  
                                 Price=8.99M},   
      
                     new Movie { Title = "Ghostbusters 2",   
                                 ReleaseDate=DateTime.Parse("1986-2-23"),   
                                 Genre="Comedy",  
                                 Rating="G",  
                                 Price=9.99M},   
    
                   new Movie { Title = "Rio Bravo",   
                                 ReleaseDate=DateTime.Parse("1959-4-15"),   
                                 Genre="Western",  
                                 Rating="G",  
                                 Price=3.99M},   
                 };
    
                movies.ForEach(d => context.Movies.Add(d));
            }
        }
    }
    View Code
    4,Views

     /Views/Movices/Create.cshtml

    @model MvcMovie.Models.Movie
    
    @{
        ViewBag.Title = "Create";
    }
    
    <h2>Create</h2>
    
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
    
    @using (Html.BeginForm()) {
        @Html.ValidationSummary(true)
        <fieldset>
            <legend>Movie</legend>
    
            <div class="editor-label">
                @Html.LabelFor(model => model.Title)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Title)
                @Html.ValidationMessageFor(model => model.Title)
            </div>
    
            <div class="editor-label">
                @Html.LabelFor(model => model.ReleaseDate)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.ReleaseDate)
                @Html.ValidationMessageFor(model => model.ReleaseDate)
            </div>
    
            <div class="editor-label">
                @Html.LabelFor(model => model.Genre)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Genre)
                @Html.ValidationMessageFor(model => model.Genre)
            </div>
    
            <div class="editor-label">
                @Html.LabelFor(model => model.Price)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Price)
                @Html.ValidationMessageFor(model => model.Price)
            </div>
            <div class="editor-label">
        @Html.LabelFor(model => model.Rating)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Rating)
        @Html.ValidationMessageFor(model => model.Rating)
    </div>
            <p>
                <input type="submit" value="Create" />
            </p>
        </fieldset>
    }
    
    <div>
        @Html.ActionLink("Back to List", "Index")
    </div>
    View Code

    /Views/Movices/Delete.cshtml

    @model MvcMovie.Models.Movie
    
    @{
        ViewBag.Title = "Delete";
    }
    
    <h2>Delete</h2>
    
    <h3>Are you sure you want to delete this?</h3>
    <fieldset>
        <legend>Movie</legend>
    
        <div class="display-label">Title</div>
        <div class="display-field">
            @Html.DisplayFor(model => model.Title)
        </div>
    
        <div class="display-label">ReleaseDate</div>
        <div class="display-field">
            @Html.DisplayFor(model => model.ReleaseDate)
        </div>
    
        <div class="display-label">Genre</div>
        <div class="display-field">
            @Html.DisplayFor(model => model.Genre)
        </div>
    
        <div class="display-label">Price</div>
        <div class="display-field">
            @Html.DisplayFor(model => model.Price)
        </div>
    </fieldset>
    @using (Html.BeginForm()) {
        <p>
            <input type="submit" value="Delete" /> |
            @Html.ActionLink("Back to List", "Index")
        </p>
    }
    View Code

     /Views/Movices/Details.cshtml

    @model MvcMovie.Models.Movie
    
    @{
        ViewBag.Title = "Details";
    }
    
    <h2>Details</h2>
    
    <fieldset>
        <legend>Movie</legend>
    
        <div class="display-label">Title</div>
        <div class="display-field">
            @Html.DisplayFor(model => model.Title)
        </div>
    
        <div class="display-label">Release Date</div>
        <div class="display-field">
            @Html.DisplayFor(model => model.ReleaseDate)
        </div>
    
        <div class="display-label">Genre</div>
        <div class="display-field">
            @Html.DisplayFor(model => model.Genre)
        </div>
    
        <div class="display-label">Price</div>
        <div class="display-field">
            @Html.DisplayFor(model => model.Price)
        </div>
            <div class="display-label">Rating</div>
        <div class="display-field">
            @Html.DisplayFor(model => model.Rating)
        </div>
    </fieldset>
    <p>
        @Html.ActionLink("Edit", "Edit", new { id=Model.ID }) |
        @Html.ActionLink("Back to List", "Index")
    </p>
    View Code

    /Views/Movices/Edit.cshtml

    @model MvcMovie.Models.Movie
    
    @{
        ViewBag.Title = "Edit";
    }
    
    <h2>Edit</h2>
    
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
    
    @using (Html.BeginForm()) {
        @Html.ValidationSummary(true)
        <fieldset>
            <legend>Movie</legend>
    
            @Html.HiddenFor(model => model.ID)
    
            <div class="editor-label">
                @Html.LabelFor(model => model.Title)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Title)
                @Html.ValidationMessageFor(model => model.Title)
            </div>
    
            <div class="editor-label">
                @Html.LabelFor(model => model.ReleaseDate)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.ReleaseDate)
                @Html.ValidationMessageFor(model => model.ReleaseDate)
            </div>
    
            <div class="editor-label">
                @Html.LabelFor(model => model.Genre)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Genre)
                @Html.ValidationMessageFor(model => model.Genre)
            </div>
    
            <div class="editor-label">
                @Html.LabelFor(model => model.Price)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Price)
                @Html.ValidationMessageFor(model => model.Price)
            </div>
    
            <div class="editor-label">
                @Html.LabelFor(model => model.Rating)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Rating)
                @Html.ValidationMessageFor(model => model.Rating)
            </div>
            <p>
                <input type="submit" value="Save" />
            </p>
        </fieldset>
    }
    
    <div>
        @Html.ActionLink("Back to List", "Index")
    </div>
    View Code

    /Views/Movices/Index.cshtml

    @model IEnumerable<MvcMovie.Models.Movie>
    
    @{
        ViewBag.Title = "Index";
    }
    
    <h2>Index</h2>
    
    <p>
        @Html.ActionLink("Create New", "Create")
    </p>
    <table>
        <tr>
            <th>
                Title
            </th>
            <th>
                Release Date
            </th>
            <th>
                Genre
            </th>
            <th>
                Price
            </th>
                    <th>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", "Edit", new { id=item.ID }) |
                @Html.ActionLink("Details", "Details", new { id=item.ID }) |
                @Html.ActionLink("Delete", "Delete", new { id=item.ID })
            </td>
        </tr>
    }
    
    </table>
    View Code

    /Views/Movices/SearchIndex.cshtml

    @model IEnumerable<MvcMovie.Models.Movie>
    
    @{
        ViewBag.Title = "SearchIndex";
    }
    
    <h2>SearchIndex</h2>
    
    <p>
        @Html.ActionLink("Create New", "Create")
        @using (Html.BeginForm("SearchIndex","Movies",FormMethod.Get))
        {   
             <p>Genre: @Html.DropDownList("movieGenre", "All")  
          @*  &nbsp;  Title: @Html.TextBox("SearchString")  *@
             <input type="submit" value="Filter" /></p>
            }
    </p>
    <table>
        <tr>
            <th>
                Title
            </th>
            <th>
                Release Date
            </th>
            <th>
                Genre
            </th>
            <th>
                Price
            </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.ActionLink("Edit", "Edit", new { id=item.ID }) |
                @Html.ActionLink("Details", "Details", new { id=item.ID }) |
                @Html.ActionLink("Delete", "Delete", new { id=item.ID })
            </td>
        </tr>
    }
    
    </table>
    View Code
    4,Controllers

     /Controllers/MoviesController.cs

    //#define OverloadDelete
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.Entity;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using MvcMovie.Models;
    
    namespace MvcMovie.Controllers
    {
        public class MoviesController : Controller
        {
            private MovieDBContext db = new MovieDBContext();
    
    
    
            // GET: /Movies/SearchIndex
    #if ONE
    public ActionResult SearchIndex(string Genre, string searchString)
    {
    
        var GenreLst = new List<string>();
        GenreLst.Add("All");
    
        var GenreQry = from d in db.Movies
                       orderby d.Genre
                       select d.Genre;
        GenreLst.AddRange(GenreQry.Distinct());
        ViewBag.Genre = new SelectList(GenreLst);
    
        var movies = from m in db.Movies
                     select m;
    
        if (!String.IsNullOrEmpty(searchString))
        {
            movies = movies.Where(s => s.Title.Contains(searchString));
        }
    
        if (string.IsNullOrEmpty(Genre) || Genre == "All")
            return View(movies);
        else
        {
            return View(movies.Where(x => x.Genre == Genre));
        }
    
    }
    #else
    
            public ActionResult SearchIndex(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(searchString))
                {
                    movies = movies.Where(s => s.Title.Contains(searchString));
                }
    
    
                if (string.IsNullOrEmpty(movieGenre))
                    return View(movies);
                else
                {
                    return View(movies.Where(x => x.Genre == movieGenre));
                }
    
            }
    #endif
    
    
    
            //public ActionResult SearchIndex(string searchString)
            //{          
            //    var movies = from m in db.Movies
            //                 select m;
    
            //    if (!String.IsNullOrEmpty(searchString))
            //    {
            //        movies = movies.Where(s => s.Title.Contains(searchString));
            //    }
    
            //    return View(movies);
            //}
    
            [HttpPost]
            public string SearchIndex(FormCollection fc, string searchString) {
                return "<h3> From [HttpPost]SearchIndex: " + searchString + "</h3>";
            }
    
    
            //
            // GET: /Movies/
    
            public ViewResult Index()
            {
                return View(db.Movies.ToList());
            }
    
            //
            // GET: /Movies/Details/5
    
            public ActionResult Details(int id = 0)
            {
                Movie movie = db.Movies.Find(id);
                if (movie == null)
                {
                    return HttpNotFound();
                }
                return View(movie);
            }
    
            //
            // GET: /Movies/Create
    
            public ActionResult Create()
            {
                return View();
            }
    
            //
            // POST: /Movies/Create
    
            [HttpPost]
            public ActionResult Create(Movie movie)
            {
                if (ModelState.IsValid)
                {
                    db.Movies.Add(movie);
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }
    
                return View(movie);
            }
    
            //
            // GET: /Movies/Edit/5
    
            public ActionResult Edit(int id = 0)
            {
                Movie movie = db.Movies.Find(id);
                if (movie == null)
                {
                    return HttpNotFound();
                }
                return View(movie);
            }
    
            //
            // POST: /Movies/Edit/5
    
            [HttpPost]
            public ActionResult Edit(Movie movie)
            {
                if (ModelState.IsValid)
                {
                    db.Entry(movie).State = EntityState.Modified;
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }
                return View(movie);
            }
    
            //
            // GET: /Movies/Delete/5
    
            public ActionResult Delete(int id = 0)
            {
                Movie movie = db.Movies.Find(id);
                if (movie == null)
                {
                    return HttpNotFound();
                }
                return View(movie);
            }
    #if OverloadDelete
            public ActionResult Delete(FormCollection fcNotUsed, int id = 0)
            {
                Movie movie = db.Movies.Find(id);
                if (movie == null)
                {
                    return HttpNotFound();
                }
                db.Movies.Remove(movie);
                db.SaveChanges();
                return RedirectToAction("Index");
            }
    #else
    //
    // POST: /Movies/Delete/5
    
    [HttpPost, ActionName("Delete")]
    public ActionResult DeleteConfirmed(int id = 0) {
        Movie movie = db.Movies.Find(id);
        if (movie == null) {
            return HttpNotFound();
        }
        db.Movies.Remove(movie);
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    #endif
    
    
    
    
    
        }
    }
    View Code
    6,Sample|Explain FreeDownload(示例|讲解案例下载)

    百度网盘  http://pan.baidu.com/s/1i49zn73

    请单击“Introduction to MVC 3”

    warn 作者:ylbtech
    出处:http://ylbtech.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    JSON.parse()和JSON.stringify()
    php结合layui实现前台加后台操作
    微信拨打电话功能
    视觉差效果
    前端开发面试题
    字符串分割--java中String.split()用法
    vue.js实现购物车功能
    localStorage使用总结
    canvas 实现赛车小游戏
    canvas 实现飞碟射击游戏
  • 原文地址:https://www.cnblogs.com/ylbtech/p/4189618.html
Copyright © 2011-2022 走看看