zoukankan      html  css  js  c++  java
  • 总结Movies MVC3教程示例的知识点

    一、web.cofnig数据库连接

    <add name="MovieDBContext"
    connectionString="Data Source=.;Initial Catalog=Movies;Integrated Security=True"
    providerName="System.Data.SqlClient"/>

     二、初始化数据库及数据

    using System.ComponentModel.DataAnnotations;

    在Model类的Movie.cs里添加引用和下面的初始类

    public class movieInitializer:DropCreateDatabaseIfModelChanges<MovieDBContext>
    {
    protected override void Seed(MovieDBContext context)
    {
    var movies=new List<Movie>
    {
    new Movie{Title="when harry met sally",
    Price=4.6M},
    new Movie{Title="Ghost",
    Price=200.0M},
    };
    movies.ForEach(d=>context.Movies.Add(d));
    }
    }

     然后在Global.asax.cs的protected void Application_Start()里添加如下代码:

    Database.SetInitializer<MovieDBContext>(new MovieInitializer());

     三、添加MoviesControllers

    Details注意ViewResult要改成:ActionReuslt因为我们要加个HttpNotFound而它是不能返回ViewResult对象的

     public ActionResult  Details(int id=0)
    {
    Movie movie = db.Movies.Find(id);
    if (movie == null)
    {
    return HttpNotFound();
    }
    return View(movie);
    }

    象Edit和Delte最好给一个初始值,以防提交的ID是空的

    public ActionResult Edit(int id=2)
    {
    Movie movie = db.Movies.Find(id);
    if (movie == null)
    {
    return HttpNotFound();
    }
    return View(movie);
    }

    Mvc3改进了删除功能,加上了删除确认,目的是防止恶意代码没有经过确认就删除数据

    当点击删除连接时只是返回确认信息:

     public ActionResult Delete(int id)
    {
    Movie movie = db.Movies.Find(id);
    return View(movie);
    }

    再点击确认按钮进行post提交删除

    a)请注意查看View里的Delete.cshtml文件删除源文件:

    @using (Html.BeginForm()) {
    <p>
    <input type="submit" value="Delete" /> |
    @Html.ActionLink("Back to List", "Index")
    </p>

    b)在生成html的确认删除源文件里可以看到自动生成了action="/movies/Delete/1:

    <form action="/movies/Delete/1" method="post">    <p>
    <input type="submit" value="Delete" /> |
    <a href="/movies">Back to List</a>
    </p>
    </form>

    下面是确认删除后执行的动作:

    [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");
    }

    四、内容搜索过滤功能

    先来看SearchIndex.cshtml视图页:

     @using (Html.BeginForm("SearchIndex", "Movies", FormMethod.Get))
    {
    <p>Genre:@Html.DropDownList("movieGenre","All")</p>
    <p>Title:@Html.TextBox("SearchString") <input type="submit" value="Filter" /></p>

    }

    下面是Controller:

    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));
    }
    }

    下面是生成的html页面源代码:

    <form action="/Movies/SearchIndex" method="get">        
    Genre:
    <select id="movieGenre" name="movieGenre">
    <option value="">All</option>
    <option>comedy</option>
    <option>Romanti Comedy</option>
    </select>

    <p>Title:<input id="SearchString" name="SearchString" type="text" value="" /> <input type="submit" value="Filter" /></p>
    </form>

    五、Movie类和数据库连接上下文类MovieDBContext,注意引用using System.Data.Entity;

    using System.Data.Entity;
    public class Movie
    {
    public int ID{get;set;}
    public string Title{get;set;}
    public decimal Price{get;set;}
    }
    public class MovieDBContext:DbContext
    {
    public DbSet<Movie> Movies{get;set;}
    }

    六、字段规则确认验证

    public int ID { get; set; }
    [Required(ErrorMessage="标题必需要填写")]
    public string Title { 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; }
    学习交流群:364976091
  • 相关阅读:
    [BZOJ 1698] 荷叶池塘
    [BZOJ 3132] 上帝造题的七分钟
    [JLOI2011] 飞行路线
    [Codeforces Round49F] Session in BSU
    [BZOJ 3036] 绿豆蛙的归宿
    CRC-16校验原理
    ubuntu下mysql的安装与配置
    【OpenCV】边缘检测:Sobel、拉普拉斯算子
    我对sobel算子的理解
    梯度算子(普通的+Robert + sobel + Laplace)
  • 原文地址:https://www.cnblogs.com/firstcsharp/p/2268528.html
Copyright © 2011-2022 走看看