演练2-5 电影网站的功能扩展

news/2024/5/17 11:28:29/文章来源:https://blog.csdn.net/weixin_30414245/article/details/95381186

原文链接:

http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-edit-methods-and-edit-view

http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-new-field-to-the-movie-model-and-table    

    接下来,我们将使用Entity Framework Code First Migrations,来对模型类的改变做数据迁移,而数据库能相应改变。 

    默认情况下,当你使用EF Code First自动生成数据库时,Code First添加了一个数据库来跟踪数据库和模型类的同步状况。如果它们不同步,EF会抛出一个异常。

一、添加Search动作和视图

    我们将添加一个SerachIndex动作,能够通过类别或名字搜索电影,网址为\Movies\SearchIndexURL。

1.显示SearchIndex表单

    在Movies控制器中,添加SearchIndex()动作。

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

    s=>s.Title是一个Lambda表达式。
    在SearchIndex()动作中右击“添加视图”。

@model IEnumerable<MvcMovie.Models.Movie> @{ ViewBag.Title = "SearchIndex"; 
} <h2>SearchIndex</h2> <p> @Html.ActionLink("Create New", "Create") 
</p> 
<table> <tr> <th> Title </th> <th> ReleaseDate </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>

    运行应用程序,导航至/Movies/SearchIndex?searchString=ghost网址。

    然而不可能希望用户每次通过路由来搜索电影,现在我们将在SearchIndex视图中添加搜索文本框,就在@Html.ActionLink("Create New", "Create")后面。

@model IEnumerable<MvcMovie.Models.Movie> @{ ViewBag.Title = "SearchIndex"; 
} <h2>SearchIndex</h2> <p> @Html.ActionLink("Create New", "Create") @using (Html.BeginForm()){    <p> Title: @Html.TextBox("SearchString") <br />   <input type="submit" value="Filter" /></p> } 
</p>

    运行应用程序,使用搜索电影功能。

2.添加按类型搜索

     修改该Movies控制器中SearchIndex动作。

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

    修改SearchIndex视图,添加一个Html.DropDownList来显示类别。

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

    运行应用程序,导航至/Movies/SearchIndex,试着按类别和名字搜索。

二、在Movie模型中添加一个新字段Rating

1.当模型改变时,创建Code First数据迁移

(1)删除Movie数据库

    删除服务器连接中的MovieDBContext连接。

    删除App_Data文件夹下的数据库文件Movies.mdf。

    生成解决方案,确保程序没有问题。

    点击“工具"菜单,点击“库程序包管理器 | 程序包管理器控制台“。

    在程序包管理器控制台窗口中,输入"Enable-Migrations -ContextTypeName MvcMovie.Models.MovieDBContext”。

    Enable-Migrations命令,新建了一个Migrations文件夹,里面有Configuration.cs文件。

    打开Configuration.cs文件,将其中的Seed()方法修改如下。

protected override void Seed(MvcMovie.Models.MovieDBContext context)
{context.Movies.AddOrUpdate( i => i.Title,new Movie{Title = "When Harry Met Sally",ReleaseDate = DateTime.Parse("1989-1-11"),Genre = "Romantic Comedy",Price = 7.99M},new Movie{Title = "Ghostbusters ",ReleaseDate = DateTime.Parse("1984-3-13"),Genre = "Comedy",Price = 8.99M},new Movie{Title = "Ghostbusters 2",ReleaseDate = DateTime.Parse("1986-2-23"),Genre = "Comedy",Price = 9.99M},new Movie{Title = "Rio Bravo",ReleaseDate = DateTime.Parse("1959-4-15"),Genre = "Western",Price = 3.99M});}

    每次迁移后,Code First调用Seed()方法,更新数据库数据,如果不存在则创建。

    此时生成解决方案,否则会出错。

    接下来,创建一个DbMigration类来初始化数据迁移。在此,迁移将创建一个新的数据库,所以之前需要先删除movie.mdf文件。

    在程序包管理控制台窗口中,输入命令“add-migration Initial”,创建初始迁移。“Initial”名字是任意的,它命名了这次迁移的名字。

    Code First迁移在Migrations文件夹中创建了一个类文件({DateStamp}_Initial.cs),这个类包含了创建数据库的模式代码。然后Seed()方法会运行,使数据库中得到测试数据。

    输入命令"update-database”,创建数据库,运行Seed()方法。

    如果你遇到错误提示说数据表已经存在,不能创建,可能是因为你在删除数据库后又运行过程序。这样的话,再次删除Movies.mdf文件,重新运行命令”update-database”。如果仍旧遇到问题,删除Migrations文件夹,删除数据库文件和服务器链接。

    运行程序,并导航至/Movies网址。

2.在Movie模型类中添加Rating属性

    打开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 string Rating { get; set; }}

    生成解决方案。更新\Views\Movies\Index.cshtml视图如下。

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

     接下来,打开\Views\Movies\Create.cshtml文件,修改代码如下。

<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>

    运行程序,导航至/Movies网址,遇到错误如下。

    这个错误是因为Movie模型类改变过了,和现有数据库不一致,可以通过以下方案解决:

(1)删除数据库文件和服务器数据连接。这样做虽然简单,但是会丢失所有的数据。

(2)手动修改现有数据库,已达到与模型类文件一致。这样已有的数据库数据得到保存。

(3)使用Code First数据迁移更新数据库模式。

    我们将使用第三种方法。打开Migrations\Configuration.cs文件,添加Rating字段到每个Movie对象。

new Movie{Title = "When Harry Met Sally",ReleaseDate = DateTime.Parse("1989-1-11"),Genre = "Romantic Comedy",Rating = "G",Price = 7.99M},

    生成解决方案,打开程序包管理控制台,输入命令“add-migration AddRatingMig”。命令执行后,VS会打开AddRatingMig文件,在Up()方法中,创建了rate列。

    生成解决方案,输入命令“update-database”。

    重新运行应用程序,导航至/Movies网址,查看Rate字段。

 

转载于:https://www.cnblogs.com/meetyy/p/3978544.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_787449.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用 itms-services 协议,通过网站来发布ipa应用

2019独角兽企业重金招聘Python工程师标准>>> 苹果允许用itms-services协议来直接在iphone/ipad上安装应用程序&#xff0c;我们可以直接生成该协议需要的相关文件&#xff0c;这样产品经理和测试都可以直接在设备上安装新版的应用&#xff1a; 需要两个文件&#xf…

nginx(7):使用nginx的proxy_cache做网站缓存

2019独角兽企业重金招聘Python工程师标准>>> 为什么要做web cache&#xff0c;我想大家最主要的是解决流量的压力。随着网站流量的提升&#xff0c;如果只是单台机器既处理静态文件&#xff0c;又处理动态脚本&#xff0c;显然效率很难上升&#xff0c;不能处理日益…

网站安全认证系统的设计变迁-5中网占安全认证方案的chm下载

为什么80%的码农都做不了架构师&#xff1f;>>> 网站系统的安全认证一共经历了6个阶段&#xff1a; 阶段1-单应用服务器&#xff0c;单数据库服务器 阶段2-单web服务器,多应用服务器模式 阶段3-单web服务器&#xff0c;多应用服务器cache 阶段4-按照业务进行切分阶…

php婚纱网站设计论文,thinkPHP的婚纱购物商城网站的设计与实现

婚姻是每个人的人生大事&#xff0c;所以很多时候如何能够保留住自己最漂亮的这一时刻是很多人多在考虑的一个问题&#xff0c;在结婚的时候大家都会穿上漂亮的婚纱来进行拍照和举行仪式&#xff0c;所以如何选取更加漂亮和适合自己的婚纱是每个人都会遇到的问题&#xff0c;为…

关于大型网站技术演进的思考(七)--存储的瓶颈(7)

本文开篇提个问题给大家&#xff0c;关系数据库的瓶颈有哪些&#xff1f;我想有些朋友看到这个问题肯定会说出自己平时开发中碰到了一个跟数据库有关的什么什么问题&#xff0c;然后如何解决的等等&#xff0c;这样的答案没问题&#xff0c;但是却没有代表性&#xff0c;如果出…

2021-01-16 JavaScript实例:jQuery实现京东等购物网站 放大镜

话不多说&#xff0c;直接上图 相信大家在浏览大多数网站&#xff0c;尤其是购物网站一定经常见到这种放大镜效果&#xff0c;接下来代码奉上 HTML代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"&…

监控网站图片下载

1.网站图片域名[root10-6-8-200 libexec]# more /usr/local/nagios/etc/webpage.txt http://radfile.example.info/201108/12/717_20110804012.mp3 http://tvcpic.example.info/smallpic/200309/12/030912_3774.jpg http://iadpic.example.info/200104/20010406/dang01040613.j…

安装了loadrunner11 ,可是登录进入WebTours网站后,点击flights,页面是空白

为什么80%的码农都做不了架构师&#xff1f;>>> 安装了loadrunner11 &#xff0c;可是登录进入WebTours网站后&#xff0c;点击flights&#xff0c;页面是空白的分析原因&#xff1f; 答&#xff1a;原因是数据库冲突。 分析过程&#xff1a; 1、判断本地电脑中安装…

java电影网站开发经验2

2019独角兽企业重金招聘Python工程师标准>>> 其实我没怎么写过技术博客&#xff0c;上学的时候看见作文就头疼的&#xff0c;所以有些地方写的不通顺望见谅&#xff0c;闲话少说入正题。 其实开发一个小网站不是太难&#xff0c;选个自己比较熟悉的语言&#xff0c;…

SharePoint服务器端对象模型 之 访问网站和列表数据(Part 5)

&#xff08;五&#xff09;列表条目&#xff08;SPListItem&#xff09; SharePoint中数据的存储基本上都是通过列表条目来完成&#xff08;文档库中的文档也是一种特殊的列表条目&#xff09;&#xff0c;因此在SharePoint应用开发中&#xff0c;最终是要和列表条目打交道的。…

视频网站报表

当下视频网站的火热程度大家都是有目共睹的&#xff0c;因此也产生了一些网红视频博主&#xff0c;比如深受营长喜爱的papi酱以及papitube的各位po主。 那么&#xff0c;这些网红是怎样使自己的视频迅速走红的&#xff0c;网站是通过哪些标准向广大吃瓜群众推荐视频的&#xff…

网站每日PV/IP统计/总带宽/URL统计脚本分享(依据网站访问日志)

在平时的运维工作中&#xff0c;我们运维人员需要清楚自己网站每天的总访问量、总带宽、ip统计和url统计等。虽然网站已经在服务商那里做了CDN加速&#xff0c;所以网站流量压力都在前方CDN层了像每日PV&#xff0c;带宽&#xff0c;ip统计等数据也都可以在他们后台里查看到的。…

常见互联网网站系统架构图

转载于:https://blog.51cto.com/azhuang/1630890

ST 几个重要的网站

2019独角兽企业重金招聘Python工程师标准>>> https://market.sencha.com/extensions?types%5B%5Dcomponents http://extjs.org.cn/ 转载于:https://my.oschina.net/u/555061/blog/499390

PHP网站验证码不显示的终结解决方案

PHP网站验证码不显示&#xff0c;这个是个很基础的PHP问题了&#xff0c;不过有点时候会比较让开发者比较头疼了。很多解决方案仅仅考虑到gd2&#xff0c;却忽略了另外一个很重要的因素了&#xff0c;相信在了解本教程之后&#xff0c;验证码不显示基本上就不算什么问题了。下面…

关于大型网站技术演进的思考(十七)--网站静态化处理—满足静态化的前后端分离(9)...

2019独角兽企业重金招聘Python工程师标准>>> 出处:夏天的森林博客 前后端分离的主题虽然讲完了&#xff0c;但是前后端分离的内容并没有结束&#xff0c;本篇将继续前后端分离的问题&#xff0c;只不过这次前后端分离的讲述将会围绕着本系列的主题网站静态化进行。在…

招聘网站需求分析

网站定位&#xff1a;建筑行业专业性盈利性招聘网站。 一、主页设计 用户明确要求以下三点&#xff1a; 1、主色调&#xff1a;蓝色。 2、有不同尺寸的广告位。 3、自动刷新。 其余参照以下网站&#xff1a; 4&#xff0c;个人用户注册页面 5&#xff0c;企业注册页面 二、求职…

VS2013自带的Browser Link功能引发浏览localhost网站时不停的轮询

浏览localhost网站时候不管你打开那个页面它都会不停的轮询。据悉这是VS2013自带的Browser Link功能&#xff0c;里面用到SignalR机制 什么是Browser Link功能&#xff0c;什么是SignalR机制大家可以没事去百度了解一下。 Browser Link功能讲解地址&#xff1a;http://www.cxyc…

前端程序猿需要知道的一些网站,工具和学习途径

为什么80%的码农都做不了架构师&#xff1f;>>> 1.视频网站&#xff1a; 慕课网&#xff1a;http://www.imooc.com/ 51CTO&#xff1a;http://edu.51cto.com/ 2.素材类网站&#xff1a; 门素材&#xff1a;http://www.17sucai.com/ 懒人之家&#xff1a;http://www…

Hive实战之视频网站指标分析

文章目录一、需求二、数据结构2.1、视频表2.2、用户表2.3、[测试数据](https://download.csdn.net/download/wuxintdrh/12679888)三、准备工作3.1、创建表3.1.1、chbvideo_ori3.1.2、chbvideo_user_ori3.1.3、导入数据3.1.4、导入到orc表中四、业务分析4.1、统计视频观看数Top1…