添加一个查找方法和查找视图
在这一节我们将实现一个SearchIndex响应方法,允许您按流派或名字查找电影。
它利用网址/Movies/SearchIndex。请求将展示一个HTML页面,它包含为了查
找电影由用户输入的input控件。当用户提交页面时,响应方法将获得由用户post
的查找条件并依据条件查询数据库。最终的效果图如下所示 。
展示查找页面
首先,在MoviesController类中添加一个SearchIndex响应方法。这个方法返回一个包含HTML
页面的视图。代码如下:
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);
}
SearchIndex方法的第一行创建了以下的LINQ查询来查询电影:
var movies = from m in db.Movies
select m;
查询在这里定义,但却没有执行!(译注:LINQ在需要执行的时候才会执行。
一般来说,真正需要使用数据时才真正执行)
如果参数searchString不是空字符串,电影的查询被修改为过滤查找字符串,
使用如下代码:
if (!String.IsNullOrEmpty(searchString))
{
movies = movies.Where(s => s.Title.Contains(searchString));
}
当定义或通过Where、OrderBy方法修改时,LINQ查询并没有执行。相反,
查询的执行被延迟,这意味着LINQ表达式一直被延迟到它真实的值被遍历
(循环)或被ToList方法调用。在SearchIndex方法中,LINQ查询在SearchIndex
视图中执行。了解更多关于延迟查询执行,参见Query Execution。
现在您可以实现SearchIndex视图展示给用户。右键SearchIndex方法内部并单击
“Add View”,在“Add View”对话框中,指明您将传递Movie对象给视图模板
作为它的模型类。在架构模板(Scaffold template)列表中,选择List,单击Add。
当您单击Add按钮时,视图模板ViewsMoviesSearchIndex.cshtml被创建。
因为您在架构模板(Scaffold template)选择List,Visual Studio自动在视
图中生成了一些内容。架构创建了一个HTML窗体。它检查Movie类并为每个
类属性创建代码来输出<label>元素。下面展示了自动生成的创建视图:
@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 }) |
分享到:
相关推荐
asp.net mvc3.0快速入门
ASP.NET MVC3.0 高级编程
ASP.NET MVC 5入门指南 (中文PDF+源碼) 1. ASP.NET MVC 5 - 开始MVC 5之旅 2. ASP.NET MVC 5 - 控制器 3. ASP.NET MVC 5 - 视图 4. ASP.NET MVC 5 - 将数据从控制器传递给视图 5. ASP.NET MVC 5 - 添加一个模型 6. ...
VS2010安装完成后,自带的没有MVC3,下载此软件后安装,VS会自动带出mvc3的选项,可以开发或是打开MVC3的项目,下载之后是4个安装文件 AspNetMVC3Setup.exe,AspNetMVC3Setup_CHS.exe, AspNetMVC3ToolsUpdateSetup....
ASP.NET MVC3.0教程 MVC3.0教程 ASP.NET MVC3.0入门
ASP.NET MVC 3.0 插件,ASP.NET MVC 3.0 插件,ASP.NET MVC 3.0 插件
Asp.net MVC 3.0 音乐商店原生教程 源代码 Asp.net MVC 3.0 音乐商店原生教程 源代码
asp.net mvc 3.0 入门项目示例,注意里面有个Db文件夹,请将数据库还原到本地的数据库里面。
ASP.NET MVC3.0 高级编程完整版
ASP.NET MVC3.0快速入门,通过实例, Step by Step的方式教你怎样进行ASP.NET MVC3模式的开发。
最新asp.net mvc3.0 在线直播(包涵视频管理)最新asp.net mvc3.0 在线直播(包涵视频管理)最新asp.net mvc3.0 在线直播(包涵视频管理)最新asp.net mvc3.0 在线直播(包涵视频管理)
asp.net mvc 3.0 demo
ASP.NET MVC3.0图片文件上传及管理程序-经典源码
ASP.net MVC 3.0
ASP.NET MVC5 入门指南 ASP.NET MVC5 入门指南ASP.NET MVC5 入门指南
ASP.Net MVC3.0中文版教程.doc ASP.Net MVC3.0中文版教程.doc ASP.Net MVC3.0中文版教程.doc
自己写的一个ASP.NET MVC3.0的小例子, 实现功能 增删改查, 带数据库, 有个Ajax 的实例,如果想看ajax效果注释就好了,ASP.NET MVC属于初学者,希望多交流
Asp.NET MVC 3.0初学
这个系统仅给刚开始学习ASP.NET MVC的新手参考的。 了解怎么使用Model,控制器,数据库实体和MVC2和MVC3在写法上的区别,转变使用控件的观念。 系统虽小,但基体架构还是有了,入门后你可以深入学习: 控制反转,...