Asp.net MVC3.0 入门指南 LIST

 

添加一个查找方法和查找视图
在这一节我们将实现一个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 }) |

你可能感兴趣的:(list,Model,asp.net,LINQ,MVC3)