📜  选择 asp-items 选择一个 (1)

📅  最后修改于: 2023-12-03 15:28:21.343000             🧑  作者: Mango

选择 ASP.NET Core 中的 asp-items

在 ASP.NET Core 中,我们可以使用 asp-items 指令来渲染一个选择(Select)表单控件。asp-items 指令将数据源中的数据转换为 HTML 的 <option> 标签,并将其呈现为下拉列表菜单。在本文中,我们将介绍如何使用 asp-items 指令以及如何处理数据源。

使用 asp-items 指令

下面是一个使用 asp-items 指令渲染选择控件的示例:

<select asp-for="Category" asp-items="Model.Categories"></select>

在这个例子中,我们将 Model.Categories 属性作为数据源,将数据源中的数据呈现为选择控件。如果我们想要将数据源中的某个属性用作显示文本,可以使用 asp-item-text 指令。例如,我们可以将 Model.Categories 中的 Name 属性用作显示文本:

<select asp-for="Category" asp-items="Model.Categories" asp-item-text="Name"></select>

同样,我们也可以指定数据源的 Value 属性使用 asp-item-value 指令:

<select asp-for="Category" asp-items="Model.Categories" asp-item-value="Id" asp-item-text="Name"></select>

这个例子中,我们将 Model.Categories 中的 Id 属性用作 <option> 标签的 value 属性,将 Name 属性用作显示文本。

处理数据源

在 ASP.NET Core 中,我们可以通过多种方式提供数据源,例如从模型绑定器获取数据,从 ViewData 中获取数据,从 ViewBag 中获取数据等等。

如果我们想要手动提供数据源,可以在控制器中的操作方法中返回数据源。例如,我们可以使用以下代码从数据库中检索一组类别:

public IActionResult Index()
{
    var categories = _dbContext.Categories.ToList();

    return View(new MyViewModel { Categories = categories });
}

然后我们可以在视图中使用 foreach 循环将数据呈现为选择控件:

<select asp-for="Category" asp-items="@(new SelectList(Model.Categories, "Id", "Name"))"></select>

在这个例子中,我们将 SelectList 对象作为数据源,该对象包含将 Model.Categories 转换为下拉列表所需的数据。SelectList 构造函数需要三个参数:数据源、用作值的属性名称和用作显示文本的属性名称。

总结

在 ASP.NET Core 中,我们可以使用 asp-items 指令来渲染选择控件。使用 asp-item-valueasp-item-text 指令可以指定数据源中的属性用作值和显示文本。我们可以通过在控制器中返回数据源以手动提供数据源,并使用 SelectList 类将数据源转换为下拉列表呈现。