ASP.NET MVC性别下拉列表实现:前端显文字,数据库存数字值
解决方案
1. 修正枚举定义(指定对应数值)
首先调整枚举,给每个性别指定数据库需要存储的int值:
// 定义带数值的枚举 public enum Gender { Male = 1, Female = 2 } // 在你的Model中使用枚举类型(类型更安全,推荐) public class YourViewModel { public Gender? SelectedGender { get; set; } }
如果坚持使用int?类型的属性,可将枚举重命名避免命名冲突:
public enum GenderOption { Male = 1, Female = 2 } public class YourViewModel { public int? Gender { get; set; } }
2. 生成正确的下拉列表
在视图中通过LINQ将枚举转换为SelectListItem集合,明确指定前端显示文本和提交的数值:
对应枚举类型属性的视图代码:
@Html.DropDownListFor(m => m.SelectedGender, Enum.GetValues(typeof(Gender)) .Cast<Gender>() .Select(g => new SelectListItem { Text = g.ToString(), // 前端显示的文本:Male/Female Value = ((int)g).ToString() // 提交到后台的数值:1/2 }), "Select Gender" // 默认提示选项 )
对应int?类型属性的视图代码:
@Html.DropDownListFor(m => m.Gender, Enum.GetValues(typeof(GenderOption)) .Cast<GenderOption>() .Select(g => new SelectListItem { Text = g.ToString(), Value = ((int)g).ToString() }), "Select Gender" )
3. 效果说明
- 前端下拉列表会显示
Select Gender、Male、Female三个选项 - 用户选择
Male时,提交到后台的数值是1;选择Female时是2 - 存储到SQL数据库时,直接保存该int值即可
内容的提问来源于stack exchange,提问作者RAKAN EHSSAN
相关产品推荐
相关产品推荐

