在asp.net core mvc中有一个任务页面,任务有三个状态分别是:未开始、进行中、已完成。想要通过一个下拉按钮来切换任务的排序方式,也就是说当切换到未完成按钮时,未完成任务会排在前面。
时间: 2024-03-18 17:41:09 浏览: 66
要实现这个功能,可以使用ASP.NET Core MVC框架中的表单和下拉列表控件。在视图中,可以创建一个表单,其中包含一个下拉列表控件,用于选择任务的排序方式,并将选择的值作为表单提交的参数。
例如,假设你有一个Task类,其中包含一个Status属性,表示任务的状态。你可以定义一个Index Action来显示所有任务,并使用Status参数来确定如何筛选它们。
在视图中,你可以使用Html.DropDownListFor方法创建一个下拉列表控件,并将其绑定到Status参数。例如,以下代码会创建一个下拉列表控件,用于选择任务的状态:
```html
@using (Html.BeginForm("Index", "Task", FormMethod.Get))
{
<div class="form-group">
@Html.Label("Sort By: ")
@Html.DropDownListFor(m => m.Status, new SelectList(new List<string> { "All", "Not Started", "In Progress", "Completed" }), "All", new { @class = "form-control" })
<button type="submit" class="btn btn-primary">Sort</button>
</div>
}
```
在这个例子中,我们创建了一个表单,其中包含一个下拉列表控件和一个“Sort”按钮。我们使用Html.DropDownListFor方法创建下拉列表控件,并将其绑定到Status属性。我们还将下拉列表控件的值绑定到一个SelectList对象,包含“所有”,“未开始”,“进行中”和“已完成”选项。当用户选择一个选项并单击“Sort”按钮时,表单将提交,并根据选择的状态筛选任务列表。
在控制器中,我们可以使用LINQ查询来获取所有任务,并根据Status参数对它们进行筛选。例如,以下代码会根据Status参数筛选任务列表:
```csharp
public IActionResult Index(string status)
{
var tasks = from t in _context.Tasks
select t;
if (status != null)
{
if (status.Equals("Not Started", StringComparison.OrdinalIgnoreCase))
{
tasks = tasks.Where(t => t.Status == "Not Started");
}
else if (status.Equals("In Progress", StringComparison.OrdinalIgnoreCase))
{
tasks = tasks.Where(t => t.Status == "In Progress");
}
else if (status.Equals("Completed", StringComparison.OrdinalIgnoreCase))
{
tasks = tasks.Where(t => t.Status == "Completed");
}
}
return View(tasks.ToList());
}
```
在这个例子中,我们根据Status参数筛选任务列表。如果选择了“未开始”,“进行中”或“已完成”选项,则我们使用LINQ的Where方法来筛选任务列表,并返回筛选后的结果。
这样,当用户选择一个选项并单击“Sort”按钮时,表单将提交,并根据选择的状态筛选任务列表。
阅读全文