MVC DropDownList SelectedValue 未正确显示

2024-04-22

我尝试搜索,但没有找到任何可以解决我的问题的内容。我在 Razor 视图上有一个 DropDownList,它不会显示我在 SelectList 中标记为“选定”的项目。以下是填充列表的控制器代码:

var statuses  = new SelectList(db.OrderStatuses, "ID", "Name", order.Status.ID.ToString());
ViewBag.Statuses = statuses;
return View(vm);

这是查看代码:

<div class="display-label">
   Order Status</div>
<div class="editor-field">
   @Html.DropDownListFor(model => model.StatusID, (SelectList)ViewBag.Statuses)
   @Html.ValidationMessageFor(model => model.StatusID)
</div>

我浏览了它,即使在视图中它也具有正确的 SelectedValue,但是 DDL 始终显示列表中的第一项,无论选择的值如何。任何人都可以指出我做错了什么让 DDL 默认为 SelectValue 吗?


最后一个论点SelectList构造函数(您希望能够在其中传递选定值 id)将被忽略,因为 DropDownListFor 帮助器使用您作为第一个参数传递的 lambda 表达式并使用特定属性的值。

所以这是一个丑陋的方法:

Model:

public class MyModel
{
    public int StatusID { get; set; }
}

控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        // TODO: obviously this comes from your DB,
        // but I hate showing code on SO that people are
        // not able to compile and play with because it has 
        // gazzilion of external dependencies
        var statuses = new SelectList(
            new[] 
            {
                new { ID = 1, Name = "status 1" },
                new { ID = 2, Name = "status 2" },
                new { ID = 3, Name = "status 3" },
                new { ID = 4, Name = "status 4" },
            }, 
            "ID", 
            "Name"
        );
        ViewBag.Statuses = statuses;

        var model = new MyModel();
        model.StatusID = 3; // preselect the element with ID=3 in the list
        return View(model);
    }
}

View:

@model MyModel
...    
@Html.DropDownListFor(model => model.StatusID, (SelectList)ViewBag.Statuses)

这是正确的方法,使用真实视图模型:

Model

public class MyModel
{
    public int StatusID { get; set; }
    public IEnumerable<SelectListItem> Statuses { get; set; }
}

控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        // TODO: obviously this comes from your DB,
        // but I hate showing code on SO that people are
        // not able to compile and play with because it has 
        // gazzilion of external dependencies
        var statuses = new SelectList(
            new[] 
            {
                new { ID = 1, Name = "status 1" },
                new { ID = 2, Name = "status 2" },
                new { ID = 3, Name = "status 3" },
                new { ID = 4, Name = "status 4" },
            }, 
            "ID", 
            "Name"
        );
        var model = new MyModel();
        model.Statuses = statuses;
        model.StatusID = 3; // preselect the element with ID=3 in the list
        return View(model);
    }
}

View:

@model MyModel
...    
@Html.DropDownListFor(model => model.StatusID, Model.Statuses)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC DropDownList SelectedValue 未正确显示 的相关文章

随机推荐

  • 在 Spark 执行器节点上安装 Python 依赖项的最简单方法?

    据我所知 您可以将单个文件作为 Python Spark 程序的依赖项发送 但是成熟的库 例如 numpy 呢 Spark 是否有办法使用提供的包管理器 例如 pip 来安装库依赖项 或者这必须在 Spark 程序执行之前手动完成 如果答案
  • 无法解析包含单引号的json数据

    Problem 我的一些 json 数据出现解析错误 因为它包含单引号 例如 我的一些数据可能如下所示 拉里的数据 我读过以下文章 JSON 响应中的 jQuery 单引号 https stackoverflow com questions
  • 由于“erf”函数使用率较高而导致性能瓶颈

    我使用大型矩阵 100x100 到 3000x3000 进行一些计算 大量求和和矩阵向量乘法 我使用 Eigen 库来处理向量和矩阵 我的代码是简单的类似 C 的代码 只有函数 没有类 并将被编译为 DLL 以在 Excel 上使用 我发现
  • 无法安装 kubernetes helm Chart 错误:无法重复使用仍在使用的名称

    无法安装 helm 图表 但当我使用 helm 生成的原始文件时 我可以通过 kubectl apply 安装 当我使用时显示以下错误helm install myChart debug Error cannot re use a name
  • 如何在运行时设置系统属性 Spring 3 MVC

    目前我们有下面的 bean 定义来设置 javax net ssl trustStore
  • Angular JS UI-网格删除行

    我是新来的ui grid我正在尝试在 AngularJS 中实现一个表格 如下图所示 我正在尝试选择一行并使用该特定行上的删除按钮将其删除 这ui grid文档要求我们使用gridApi但我找不到足够的文档 请在此处查看如何删除行的工作示例
  • 如何组合两个css3渐变?

    我有两个用于 HTML BODY 背景的 CSS 我使用这个 css 作为我页面的背景 我想将这两个重叠并获得组合效果 IE10 Consumer Preview background image ms linear gradient to
  • 连接到 atlas mongo 数据库

    我正在使用node Js expressjs mongodb 和 Atlas var Db require mongodb Db var Server require mongodb Server 上面的方法对我不起作用 通过使用atlas
  • 如何在 WPF 窗口中显示屏幕保护程序的预览

    我希望能够在 WPF 窗口内显示屏幕保护程序的预览 使用容器或控件或 我知道Windows本身将 p 参数传递给屏幕保护程序以获取预览 但是如何在 WPF 应用程序中显示该预览呢 我应该获取它的句柄并将其父级更改为我的容器或控件吗 如何 您
  • python 中单词的动名词形式

    我想获得字符串的动名词形式 我还没有找到调用库来获取动名词的直接方法 我应用了以 ing 结尾的单词的规则 但是因为异常导致我收到了一些错误 然后 我检查 cmu 单词以确保生成的动名词单词正确 代码如下 import cmudict im
  • 返回参数的类型名查找

    最近有一个学生问我一个编译问题 答案很简单 但现在我正在努力寻找原因 一个简单的例子 include
  • 获取 Jenkins 多分支管道中的分支列表

    Jenkins 多分支管道项目的 Blue Ocean 界面显示了自动创建的多个分支 是否有一种编程方式可以从要添加到 Jenkinsfile 的代码中列出管道中的分支 此问题询问位于 Jenkins 应用程序对象模型内的 Jenkins
  • 模板化成员函数的地址[重复]

    这个问题在这里已经有答案了 在下面的例子中 如何找到成员函数f的地址 template
  • 时间戳格式 - 从 1/1000 秒到 1/100 秒

    需要将1 1000秒分辨率的时间戳转换为1 100分辨率 我可能会用to char timestamp text 用于此目的的格式化功能 但是需要帮助text在这里使用 输入表 注意 这里的时间戳存储为 varchar ms1000 val
  • 复杂对象上的自定义 NSSortDescriptor

    这是我的第一篇文章 如果我可能不尊重所有惯例 我很抱歉 尽管我会尽力而为 我以前总是在 SO 上找到解决我的问题的方法 但我完全陷入了一个相当复杂的可可问题 我正在尝试对 CoreData 对象列表进行复杂的排序 我有一个由 Book 对象
  • Jquery:停止传播?

    我已经添加了 stopPropagation 但是 我仍然连续出现两个弹出窗口 这比以前好多了 其中一个被单击的元素有 20 个弹出窗口 是否有更好的方法或者我错过了什么 top document ready function click
  • 如何在 Android 浏览器上阻止某些网址?

    如何在 Android 默认浏览器上阻止某些网址 网站 我想限制用户访问某些列入黑名单的网址 例如 如果我想阻止 Facebook 那么手机内置应用程序浏览器将无法访问此 Facebook 网站 您想通过让用户安装应用程序来阻止用户设备上的
  • 使用 shutdown 终止 Amazon EC2 实例

    我可以使用 API 命令终止 Amazon EC2 实例ec2 终止实例但我试图找出如何在登录到 EC2 实例本身时执行此操作 我试过了立即关闭 h但这只是 停止 实例 而没有完全终止它 有什么办法可以做到这一点吗 您可以在创建实例时设置一
  • tkinter 无法正确识别屏幕分辨率

    我使用的是 4k 显示器 3840x2160 from tkinter import root Tk width root winfo screenwidth height root winfo screenheight print wid
  • MVC DropDownList SelectedValue 未正确显示

    我尝试搜索 但没有找到任何可以解决我的问题的内容 我在 Razor 视图上有一个 DropDownList 它不会显示我在 SelectList 中标记为 选定 的项目 以下是填充列表的控制器代码 var statuses new Sele