发布:2023/12/7 15:24:47作者:大数据 来源:大数据 浏览次数:365
在项目中经常使用到DropDownList来显示数据库中的数据,典型的例子为为某书籍选择所属类型。
Controller 代码
1 2 |
SelectList selectList = new SelectList(bookshelper.GetCategoryList()); ViewData["Category"] = selectList; |
View代码
1 |
@Html.DropDownList("Category",(SelectList) ViewData["Category"]) |
生成代码:
1 2 3 4 5 |
<select id="Category" name="Category"> <option>ImageOfTaiWan.Entity.Category</option> <option>ImageOfTaiWan.Entity.Category</option> <option>ImageOfTaiWan.Entity.Category</option> </select> |
注意上面的选择列表实际上为选项类型了,并不是我们想要的具体内容。
那怎么搞呢?
Controller代码:
1 2 |
SelectList selectList = new SelectList( bookshelper.GetCategoryList().Select(item =>item.Name)); |
View代码不变
生成Html代码:
1 2 3 4 5 |
<select id="Category" name="Category"> <option>戏剧</option> <option>小说</option> <option>历史</option> </select> |
上述代码在页面上已经完全可以显示,但是如果再将表单提交到后台那么只能获取到具体的值,而我们需要的是值的ID。
这时候就需要使用SelectList的另外一个构造函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// // 摘要: // 使用列表的指定项、数据值字段、数据文本字段和选定的值来初始化 System.Web.Mvc.SelectList 类的新实例。 // // 参数: // items: // 各个项。 // // dataValueField: // 数据值字段。 // // dataTextField: // 数据文本字段。 // // selectedValue: // 选定的值。 public SelectLit(IEnumerable items, string dataValueField, string dataTextField, object selectedValue); |
实现三:
将Controller代码修改为:
1 2 |
SelectList selectList = new SelectList(item, "Id","Name"); ViewData["Category"] = selectList; |
生成的Html代码:
1 2 3 4 5 |
<select id="Category" name="Category"> <option value="3">戏剧</option> <option value="2">小说</option> <option value="1">历史</option> </select> |
自此,我们已经完全实现了功能
如果是在编辑页,则需要让下拉列表框默认选择一项,那么这个功能需要为SelectList的构造函数添加第四个参数selectedValue
1 2 3 4 |
Entity.Books books = bookshelper.GetById(id); var item = bookshelper.GetCategoryList(); SelectList selectList = new SelectList(item, "Id","Name",books.Category); ViewData["Category"] = selectList; |
则生成的html代码为:
1 2 3 4 5 |
<select id="Category" name="Category"> <option value="3">戏剧</option> <option selected="selected" value="2">小说</option> <option value="1">历史</option> </select> |
controller:
1 |
ViewBag.Category = new SelectList(_dbcontext.Category.ToList(), "Id", "CategoryName"); |
view:
1 2 3 |
<select asp-for="CategoryId" asp-items="@ViewBag.Category" class="form-control"> <option>--- 请选择 ---</option> </select> |
Controller代码:
1 2 |
IEnumerable<SelectListItem> items = bookshelper.GetCategoryList().Select(item => new SelectListItem { Value = item.Id.ToString(), Text = item.Name }); |
View代码:
1 |
@Html.DropDownList("Category",(IEnumerable<SelectListItem>) ViewData["Category"]) |
1 2 3 4 5 |
<selectid="Category" name="Category"> <optionvalue="3">戏剧</option> <optionvalue="2">小说</option> <optionvalue="1">历史</option> </select> |
controller:
1 |
ViewBag.Category=_dbcontext.Category.ToList(); |
View
1 2 3 4 |
<select name="categoryId" asp-items="(ViewBag.Category as List<Category>).Select (c=>new SelectListItem{Text=c.CategoryName,Value=c.Id.ToString()})" class="form-control"> <option value="-2" selected>请选择</option> </select> |
绑定到Enum枚举常量中:
asp.net core 绑定enum到select控件中
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4