初学MVC4,在网上看到的这个教程很好:http://www.cnblogs.com/powertoolsteam/archive/2012/11/01/2749906.html,一直在一步步的跟着做,但是到了第七篇数据迁移(http://www.cnblogs.com/powertoolsteam/archive/2013/02/26/2933105.html),执行程序包管理器控制台命令的时候,我的VS2013出现了这个问题:未能加载文件或程序集“Microsoft.VisualStudio.Shell, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件。找了好久也没解决这个问题,CodeFirst在我的理解中大概就是先编写代码,然后根据代码生成数据库吧,这就导致了一个问题,如果到后来我需要修改数据库中的某一个字段,就需要修改程序中的一大片代码了。第七篇就是说明这个问题的。但无奈我的配置环境有问题,没办法跟着教程做了。于是我想如果一开始就把Model中的字段以及验证全做好,就可以跳开这篇教程跟着后面的做了。
于是我把之前做的删掉,重新创建Model,Controller和View。
首先创建Model,里面包含Model字段与相应验证,还有数据上下文类(需引用 System.Data.Entity;),这个类负责在数据库中获取,存储,更新,处理 Movie
类的实例。
然后 在Controller文件夹中添加Movies控制器
生成项目(此时已生成View了,可以在Views文件夹中看到Movies的5个视图),运行,在地址栏中URL后追加输入/Movies/Create进入新建界面,会看到验证已经做好,甚至日期文本框都做好了,高大上的赶脚啊。以前都是使用JS插件做日期文本框的...
PS:如果看效果时不想每次运行程序都这么在地址栏中输入URL,想直接进入这个创建界面,那就在App_Start文件夹中的RouteConfig.cs文件上改一下路由路径,这样一运行项目就进入到创建界面了:defaults: new { controller = "Movies", action = "Create", id = UrlParameter.Optional }
好的,现在就需要做一个根据用户输入来查询的功能了。按照电影名称和上映日期来查询吧,在MoviesController中添加如下方法,有电影名称和上映时间两个组合查询条件
/// <summary>
/// 根据电影名称和上映时间查询
/// </summary>
/// <param name="searchStr"></param>
/// <param name="date"></param>
/// <returns></returns>
public ActionResult SearchList(string searchStr,DateTime? date)
{
var movies = from m in db.Movies select m;
if (!string.IsNullOrEmpty(searchStr))
{
movies = movies.Where(s => s.Title.Contains(searchStr));
}
if (!string.IsNullOrEmpty(date.ToString()))
{
movies = movies.Where(s => s.ReleaseDate == date);
}
return View(movies);
}
添加完以后再方法体内右键,添加视图:
生成一下,运行,在地址栏中追加/Movies/SearchList?searchStr=of&date=2014/8/1试一下查询结果,是对的就说明方法没错。接下来就给界面添加用于输入查询条件的文本框了。按照教程,在对应的视图中添加代码
完成后,运行,进入搜索界面,效果:
恩,OK了。
大致步骤就是:先创建Model,然后根据Model创建对应的Controller,然后在Controller中创建方法,再根据方法创建对应的View。