如何在ASP.NET Core MVC应用中将Rating文本框改为下拉菜单?
将ASP.NET Core MVC Create页面的Rating文本框改为下拉菜单
一、修改MoviesController中的Create(GET)方法
你之前的代码位置有误,应该在MoviesController的Create GET请求方法中编写(而非Index方法),用于为Create页面提供下拉选项。直接使用ASP.NET Core内置的SelectListItem类即可,无需自定义SelectRating:
using Microsoft.AspNetCore.Mvc.Rendering; // ... 控制器其他代码 // GET: Movies/Create public IActionResult Create() { // 构建Rating选项列表 var ratingOptions = new List<SelectListItem> { new SelectListItem { Text = "G", Value = "G" }, new SelectListItem { Text = "PG", Value = "PG" }, new SelectListItem { Text = "PG-13", Value = "PG-13" }, new SelectListItem { Text = "R", Value = "R" } }; // 通过ViewBag将选项传递到视图 ViewBag.RatingOptions = ratingOptions; return View(); }
二、修改Create.cshtml视图文件
你需要编辑的是/Views/Movies/Create.cshtml(不是Index.cshtml),找到原Rating文本框代码并替换为下拉菜单:
原Rating字段代码示例:
<div class="form-group"> <label asp-for="Rating" class="control-label"></label> <input asp-for="Rating" class="form-control" /> <span asp-validation-for="Rating" class="text-danger"></span> </div>
替换为:
<div class="form-group"> <label asp-for="Rating" class="control-label"></label> <select asp-for="Rating" asp-items="@ViewBag.RatingOptions" class="form-control"> <option value="">请选择评级</option> <!-- 可选的默认空选项 --> </select> <span asp-validation-for="Rating" class="text-danger"></span> </div>
三、补充:同步修改Edit页面(可选)
若希望Edit页面的Rating也使用下拉菜单,只需在MoviesController的Edit(GET)方法中添加相同的Rating选项代码,再修改/Views/Movies/Edit.cshtml中的Rating字段,替换为上述下拉菜单代码即可。
内容的提问来源于stack exchange,提问作者Trevor
相关产品推荐
相关产品推荐

