asp.net-mvc – MVC DropDownList SelectedValue不正确显示

我尝试搜索,没有找到任何解决问题的东西。我在Razor视图中有一个DropDownList,它不会显示在SelectList中标记为Selected的项目。这是填写列表的控制器代码
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 Helper使用您作为第一个参数传递的lambda表达式,并使用特定属性的值。

所以这是丑陋的方法

模型:

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" },},"Name"
        );
        ViewBag.Statuses = statuses;

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

视图:

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

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

模型

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,"Name"
        );
        var model = new MyModel();
        model.Statuses = statuses;
        model.StatusID = 3; // preselect the element with ID=3 in the list
        return View(model);
    }
}

视图:

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

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....