asp.net-core - ASP.NET Core 使用多选列表框过滤列表
问题描述
我有一个使用“列表”模板的标准剃须刀页面,我添加了一个下拉列表来过滤显示哪些记录。我使用了这里的代码示例:https ://docs.microsoft.com/en-us/aspnet/core/tutorials/razor-pages/search?view=aspnetcore-3.1
使用教程的“按类型搜索”部分。
我让它工作,但希望用户能够从列表中选择多个项目用作过滤器。我在选择标签中添加了“多个”,我可以选择多个项目,但它只处理选择的第一个项目。
如何将多个项目添加到过滤器中,以便所有选定的值都显示在列表中?
解决方案
在 select 标签中添加“multiple”后,需要修改接收到的 model MovieGenre
。例如:
public class IndexModel : PageModel
{
[BindProperty(SupportsGet = true)]
public string SearchString { get; set; }
public SelectList Genres { get; set; }
[BindProperty(SupportsGet = true)]
public List<string> MovieGenre { get; set; }
public void OnGet()
{
// Transfer data here.
Genres = new SelectList(new List<Genre> {
new Genre{id=1,GenreName="Genre1"},
new Genre{id=2,GenreName="Genre2"},
new Genre{id=3,GenreName="Genre3"},
},"id", "GenreName");
}
}
public class Genre
{
public int id { get; set; }
public string GenreName { get; set; }
}
在 Index.cshtml 中:
<form>
<select asp-for="MovieGenre" asp-items="Model.Genres" multiple>
<option value="">All</option>
</select>
<input type="submit" value="Filter" />
</form>
然后,它将获得 Multiple MovieGenre。
推荐阅读
- redis - 如何在 Ray 中获取有关 GCS Redis 内容的信息?
- encoding - SQL 不允许将数据添加到外键中
- html - 当里面的元素很大时,div的填充变大
- javascript - 我无法影响“拒绝执行内联事件处理程序”错误的 DOM 原因。-Chrome 扩展
- html - 文字颜色在 safari 中不起作用,我没有 macOS 来修复它你能帮我吗
- django - 没有“授权”标头,如何访问授权标头?姜戈
- python - TypeError:需要一个整数(获取类型str)python数组
- node.js - Heroku 上的 Nuxt 构建不起作用,但在本地运行
- pug - 如何将变量传递给 pug 包含的纯文本文件(.js 文件)
- javascript - 正则表达式获取字符串的一部分