总结Movies MVC3教程示例的知识点

简介: 一、web.cofnig数据库连接  二、初始化数据库及数据 using System.ComponentModel.DataAnnotations; 在Model类的Movie.

一、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
相关文章
|
存储 XML 前端开发
“自定义MVC原理解析与示例:打造优雅、可定制化的Java应用程序”(上)
“自定义MVC原理解析与示例:打造优雅、可定制化的Java应用程序”
57 0
|
2月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
38 7
|
设计模式 前端开发 Java
“自定义MVC原理解析与示例:打造优雅、可定制化的Java应用程序”(下)
“自定义MVC原理解析与示例:打造优雅、可定制化的Java应用程序”(下)
30 0
|
XML 前端开发 数据处理
Android——MVC、MVP、MVVM框架实现登录示例
MVC 描述 缺点 优点 MVP 效果图 描述 缺点 优点 代码解析 视图效果图 建立实体类 建立实体类接口 实现实体类接口 设置P层 建立交互接口 数据绑定 MVVM 效果图 描述 代码解析 导入dataBinding 实体类 建立viewmodel xml绑定数据 视图与数据绑定
439 0
Android——MVC、MVP、MVVM框架实现登录示例
|
前端开发 Java 程序员
CORS跨域资源共享(三):@CrossOrigin/CorsFilter处理跨域请求示例及原理分析【享学Spring MVC】(下)
CORS跨域资源共享(三):@CrossOrigin/CorsFilter处理跨域请求示例及原理分析【享学Spring MVC】(下)
CORS跨域资源共享(三):@CrossOrigin/CorsFilter处理跨域请求示例及原理分析【享学Spring MVC】(下)
|
前端开发 Java Spring
CORS跨域资源共享(三):@CrossOrigin/CorsFilter处理跨域请求示例及原理分析【享学Spring MVC】(中)
CORS跨域资源共享(三):@CrossOrigin/CorsFilter处理跨域请求示例及原理分析【享学Spring MVC】(中)
CORS跨域资源共享(三):@CrossOrigin/CorsFilter处理跨域请求示例及原理分析【享学Spring MVC】(中)
|
XML 前端开发 Java
CORS跨域资源共享(三):@CrossOrigin/CorsFilter处理跨域请求示例及原理分析【享学Spring MVC】(上)
CORS跨域资源共享(三):@CrossOrigin/CorsFilter处理跨域请求示例及原理分析【享学Spring MVC】(上)
CORS跨域资源共享(三):@CrossOrigin/CorsFilter处理跨域请求示例及原理分析【享学Spring MVC】(上)
|
前端开发 安全 Dubbo
Spring MVC & Boot & Cloud 技术教程汇总(长期更新)
Java成神之路技术整理(长期更新) 以下是Java技术栈微信公众号发布的关于 Spring/ Spring MVC/ Spring Boot/ Spring Cloud 的技术干货,本文长期更新。
338 0
|
前端开发 .NET 中间件
ASP.NET Core 配置 MVC - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 配置 MVC - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 配置 MVC 前面几章节中,我们都是基于 ASP.
1915 0