ASP.NET .cshtml页面如何实现ComboBox?asp:DropDownList无法生效如何处理?
asp:DropDownList无法运行的原因
<asp:DropDownList>是ASP.NET Web Forms专属的服务器控件,仅支持.NET Framework下的Web Forms项目,你当前使用的是ASP.NET Core的Razor视图(.cshtml),框架本身不兼容Web Forms的服务器控件,因此无法正常渲染运行。
下拉框(ComboBox)正确实现方案
方案1:静态硬编码选项(匹配你当前的需求)
直接使用原生HTML select标签配合Razor标签助手即可实现同等效果,修改后的完整代码如下:
@section Head{ <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="~/css/make-ad.css" rel="stylesheet" /> <title>Document</title> } <form asp-controller="Item" asp-action="Add" method="post"> <label> 分类</label> <input asp-for="CategoryId" type="text" /> <!-- 替换原asp:DropDownList代码 --> <select class="ddlstyle" id="DropDownList1" asp-for="SelectedCity"> <option value="">请选择</option> <option>新德里</option> <option>大诺伊达</option> <option>纽约</option> <option>巴黎</option> <option>伦敦</option> </select> <button type="submit"> 新增 </button> </form>
注意:将asp-for的SelectedCity替换为你的视图模型中存储下拉框选中值的对应属性名,表单提交时会自动将选中值绑定到该属性
方案2:动态绑定后端数据源
如果下拉选项需要从后端加载,可按以下步骤实现:
- 首先在Controller的GET请求方法中构造选项列表,存入ViewBag或视图模型:
public IActionResult Add() { // 示例数据,实际可从数据库查询获取 var cityOptions = new List<SelectListItem> { new SelectListItem{ Value = "", Text = "请选择" }, new SelectListItem{ Value = "1", Text = "新德里" }, new SelectListItem{ Value = "2", Text = "大诺伊达" }, new SelectListItem{ Value = "3", Text = "纽约" }, new SelectListItem{ Value = "4", Text = "巴黎" }, new SelectListItem{ Value = "5", Text = "伦敦" } }; ViewBag.CityOptions = cityOptions; return View(); }
- 再在Razor视图中直接绑定
asp-items属性即可:
<select class="ddlstyle" id="DropDownList1" asp-for="SelectedCity" asp-items="@ViewBag.CityOptions"></select>
内容的提问来源于stack exchange,提问作者bynik
相关产品推荐
相关产品推荐

