ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Razor页面 搜索

2022-06-16 15:02:33  阅读:185  来源: 互联网

标签:Index SearchString Razor 代码 Movies 搜索 cshtml Pages 页面


1. 添加了按流派或名称搜索电影

  Pages/Movies/Index.cshtml.cs 添加代码

  using Microsoft.AspNetCore.Mvc.Rendering;(这个是SelectList的引用)

  [BindProperty(SupportsGet = true)]

  public string SearchString { get; set; }

  public SelectList Genres { get; set; }

  [BindProperty(SupportsGet = true)]

  public string MovieGenre { get; set; }

  备注:

    SearchString:包含用户在搜索文本框中输入的文本。

    [BindProperty]:会绑定名称与属性相同的表单值和查询字符串。 在 HTTP GET 请求中进行绑定需要 [BindProperty(SupportsGet = true)]

    Genres :包含流派列表。

    MovieGenre:包含用户选择的特定流派。例如,“Western”。

  OnGetAsync()方法中新增代码 : 

    // LINQ查询 选择电影

    var movies = from m in _context.Movie

          select m;

    // SearchString不为空 电影查询会修改为根据搜索字符串进行筛选。

       if (!string.IsNullOrEmpty(SearchString))

    {

      //  Lambda表达式查询
      movies = movies.Where(s => s.Title.Contains(SearchString));
    }

    验证 : 导航到电影页面,并向 URL 追加一个如 ?searchString=Ghost 的查询字符串.

      例 : https://localhost:5001/Movies?searchString=Ghost

    查看结果 : 显示结果为筛选过后的电影。

  如果向 Index 页面添加了以下路由模板,

    Pages/Movies/Index.cshtml 修改代码

    @page "{searchString?}"

    搜索字符串则可作为 URL 段传递。

    例 :https://localhost:5001/Movies/Ghost。

2. 将页面  Pages/Movies/Index.cshtml 修改的代码  @page "{searchString?}" 修改为 @page

    Pages/Movies/Index.cshtml 添加代码

      <form>

        <p>

          Title: <input type="text" asp-for="SearchString" />

             <input type="submit" value="Filter" />

        </p>

      </form>

 

    保存更改并测试筛选器。

3. 按流派搜索(微软文档写的是流派,感觉就是类别 )

  此处用到了文章刚开始时定义的 “Genres” 和 “MovieGenre”

    Pages/Movies/Index.cshtml.cs

      OnGetAsync()方法中 添加代码

    ①. // 此处代码 作用是 获取数据集中 Genre 列不重复的数据 为页面 类别控件 赋值

      IQueryable<string> genreQuery = from m in _context.Movie   

                          orderby m.Genre

                          select m.Genre;

      Genres = new SelectList(await genreQuery.Distinct().ToListAsync());

    ②.// 此处代码 作用是 筛选 指定类别的 电影集合 (Lambda表达式)

      if (!string.IsNullOrEmpty(MovieGenre))

      {

           movies = movies.Where(x => x.Genre == MovieGenre);

         }

 

  Pages/Movies/Index.cshtml 添加代码 (添在了之前筛选文本框之前): 

    例 : 

      <form>

        <p>

           <select asp-for="MovieGenre" asp-items="Model.Genres">

            <option value="">All</option>

           </select>

           Title: <input type="text" asp-for="SearchString" />

          <input type="submit" value="Filter" />

        </p>

      </form> 

  通过按流派(类别)或和电影标题搜索来测试应用。

标签:Index,SearchString,Razor,代码,Movies,搜索,cshtml,Pages,页面
来源: https://www.cnblogs.com/AlbertNicole/p/16381941.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有