You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 09:21:00