ASP.NET MVC5 入门八——添加搜索

添加一个搜索的方法和搜索的视图

接下来我们添加搜索功能,可以根据电影的标题搜索。

第一步:更新index窗体

在最开始MVC入门说过,MVC一个好处就是关注点分离。当我们需要修改和数据有关的东西,只要去修改Controller 就可以。现在我们去修改MoviesController的Index方法:

image

第一行的LINQ查询用来选择Movies。仅仅是定义了movies代表数据库中的哪些,还没有开始查询。接下来判断查询的字符串是否为空,如果不为空就开始查询标题一样的电影。

s => s.Title 这是一个Lambda 表达式。一般用在基于方法的LINQ查询中,比如上面的Where。

我们现在F5运行一下看看,在地址栏后面加上?searchString=中国

image

image

当然,我们不能让用户一直在地址栏加上那么一串来搜索,普遍做法是,在页面顶部加一个搜索框。看到这个就知道需要改动View部分。我们打开Views\Movies\Index.cshtml 文件,在Create New后面加上如下代码:

image

image

可以发现,我们并没有添加控制器中Index的POST请求,也能正常查询。我们现在添加HttpPost方法

image

image

我们会发现,GET和POST请求的url都是一样的,都是 localhost:xxx/Movies/Index 。假如我们想要把链接发给朋友,让他知道我想看哪些电影,但是这些查询信息却没有在url里面体现,这样不肯能发送给朋友。

解决方法是利用 BeginForm 的重载,有个指定POST请求添加搜索信息到url中。

@using (Html.BeginForm(“Index”,”Movies”,FormMethod.Get))

改成如上的代码,就可以指定用GET方法提交,哪怕你已经有了HttpPost 的方法。

image

接下来:添加更多搜索

继续阅读“ASP.NET MVC5 入门八——添加搜索”