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

MVC框架下Html.Grid表格内下拉框无法回显已保存选中值求助

问题排查与修复方案

核心问题1:控制器ViewBag赋值逻辑错误

你当前的GET请求Index方法中存在两处致命逻辑错误:

  • 遍历数据列表的循环中直接return,仅循环了第一条数据就返回了视图,ViewBag.EmpList永远是第一条数据处理后的结果
  • 当用户存在已保存的状态时,你将ViewBag.EmpList赋值为单个字符串值,而非下拉框需要的状态集合,导致后续构造SelectList时数据源完全错误

修正后的控制器代码

public ActionResult Index()
{
    try
    {
        // 统一加载所有可用的状态集合,全局共用,仅查询一次
        ViewBag.EmpList = dbContext.MVP_CurrentStatus.Where(x => x.isActive == true)
                                    .OrderBy(x => x.MVPCurrentStatus)
                                    .ToList();
        var search = dbContext.OP_Admin_MVP_TrackingApp.ToList();
        return View(search);
    }
    catch (DbEntityValidationException e)
    {
        foreach (var validationErrors in e.EntityValidationErrors)
        {
            foreach (var validationError in validationErrors.ValidationErrors)
            {
                Trace.TraceInformation("Property: {0} Error: {1}", validationError.PropertyName,
                    validationError.ErrorMessage);
            }
        }
        Session["Error"] = e.InnerException + "   ----   " + e.Message;
    }
    return View();
}

核心问题2:DropDownList参数优先级问题

MVC的Html.DropDownList第一个参数为表单字段名,HtmlHelper会优先尝试从ViewData/Model中查找该名称对应的值作为选中项,优先级高于你传入的selectedValue参数。你传了固定字符串Select Current Status,系统找不到匹配值就会默认选中第一个选项。

修正后的视图下拉框代码

x.Add().Titled("Current Status").Encoded(false).SetWidth(1).Sanitized(false).Filterable(true)
.RenderValueAs(y => @Html.DropDownList(
    $"CurrentStatus_{y.EmpID}", // 字段名和id保持一致,避免全局匹配
    new SelectList(ViewBag.EmpList, "MVPCurrentStatus", "MVPCurrentStatus", y.OP_CurrentStatus), 
    new { style = "width: 100px;", @class = "form-control", @id = "CurrentStatus_" + y.EmpID }
));

额外注意事项

确保y.OP_CurrentStatus的类型和MVP_CurrentStatus实体中MVPCurrentStatus的类型完全一致,比如一个是int一个是string的情况下,哪怕值相等也不会触发选中。

内容的提问来源于stack exchange,提问作者Unexpected_error

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:27:04