C#-MVC 4 @ Html.DropDownListFor()未将模型值传递给下拉列表

我是MVC的新手,正在尝试测试应用程序以弄湿我的脚.此应用程序的一部分是生成带有下拉框的表单.我用

@ Html.DropDownListFor()生成此文件,并在创建表单上正常工作.但是当我进入编辑表单时,模型值不会传递给下拉列表.

选择清单项目

 public static string[] OnOffList()
    {
        var ret = new string[] { "On", "Off" };
        return ret;
    }

表格代码

@Html.DropDownListFor(model => model.ServiceCondition, new SelectList(OnOffDropDownHelper.OnOffList()))

对于此实例,假定model.ServiceCondition =“ Off”.

由于某种原因,每当我将此表单称为下拉列表值时,其始终为“ On”,则似乎完全忽略了模型值.

我也尝试过

@Html.DropDownListFor(model => model.ServiceCondition, new SelectList(OnOffDropDownHelper.OnOffList(), "Off"))

强制使用“关闭”值,但下拉列表中的选定值仍会显示为“打开”.

我想重申一下,我确实知道模型值是“ Off”,并且我使用相同的@ Html.DropDownListFor()创建了一个相同的“ Create”表单,并且能够将值很好地传递给模型.

就像我说的那样,我是MVC的新手,所以我们将不胜感激.

谢谢.

解决方法:

我认为您必须设置IsSelected属性.这总是对我有用:

首先,只需在模型中放置一个属性即可整理View代码:

public List<SelectListItem> OnOffDDL
{
    get
    {
        return OnOffDropDownHelper.OnOffList()
            .Select(s => new SelectListItem
                         {
                             Text = s,
                             Value = s,
                             Selected = ServiceCondition == s
                         })
            .ToList();
    }
}

然后做:

@Html.DropDownListFor(model => model.ServiceCondition, model.OnOffDDL)
上一篇:CodeGo.net>如何在Razor视图中测试lambda表达式?


下一篇:c#-MVC模型绑定-在部分编辑期间保持值