📅  最后修改于: 2023-12-03 15:29:30.199000             🧑  作者: Mango
在使用 ASP.NET MVC 5 CodeFirst 构建应用程序时,你可能需要创建一个下拉列表供用户选择。本文将介绍如何在 C# 中实现下拉列表的创建。
首先需要创建一个视图模型类,该类包含下拉列表需要显示的数据。例如,我们将创建一个 CategoryViewModel 类,它包含 CategoryName 和 CategoryId 两个属性。
public class CategoryViewModel
{
public int CategoryId { get; set; }
public string CategoryName { get; set; }
}
接下来,在控制器中创建一个方法来填充视图模型并将其传递给视图。在这个例子中,我们将创建一个 Categories 方法,用来获取所有的 Category 对象并把它们转化为 CategoryViewModel 对象列表。
public ActionResult Categories()
{
var categories = db.Categories.ToList();
var categoryViewModels = categories
.Select(c => new CategoryViewModel
{
CategoryId = c.CategoryId,
CategoryName = c.CategoryName
})
.ToList();
return View(categoryViewModels);
}
现在,我们需要创建一个视图来显示 CategoryViewModel 对象列表并创建下拉列表。我们将使用 Razor 视图引擎,并使用 Html.DropDownListFor 帮助器方法创建下拉列表。
@model List<CategoryViewModel>
@{
ViewBag.Title = "Categories";
}
<h2>Categories</h2>
@using (Html.BeginForm())
{
@Html.DropDownListFor(m => m.FirstOrDefault().CategoryId, new SelectList(Model, "CategoryId", "CategoryName"))
<input type="submit" value="Submit" />
}
在这个例子中,我们首先声明了一个模型,它是由 CategoryViewModel 对象列表组成的。然后,我们在页面上创建一个 Html 表单。使用 Html.DropDownListFor 帮助器方法,我们可以创建一个下拉列表,并将其设置为 CategoryId 属性。我们通过 SelectList 帮助器方法来创建下拉列表需要显示的数据。这个方法接受一个数据源和两个属性的名称,一个用于 Value,一个用于 Text。在这里,我们使用 CategoryId 属性作为值,使用 CategoryName 属性作为文本。
最后,我们需要在控制器中创建一个 POST 方法来处理表单提交。在这个例子中,我们将简单地重定向到另一个视图。
[HttpPost]
public ActionResult Categories(int categoryId)
{
return RedirectToAction("Index");
}
在这里,我们在控制器中创建了一个 POST 方法,它接受一个 categoryId 参数。当表单提交时,MVC 将从表单中将 categoryId 提取出来并将其作为参数传递给这个方法。在这个方法内部,我们简单地将请求重定向到 Index 视图。
本文介绍了如何在 ASP.NET MVC 5 CodeFirst 中创建下拉列表。首先,我们创建了一个视图模型类来存储下拉列表需要显示的数据。然后,我们创建了一个控制器方法来获取数据,并将其传递给视图。接下来,我们创建了一个视图来显示数据并创建下拉列表。最后,我们创建了一个 POST 方法来处理表单提交。