ViewCodel中的模型的MVC DropDown

时间:2015-12-04 12:47:18

标签: .net model-view-controller razor

我正在研究MVC应用程序,对于我当前的表单,我有一个类似

的ViewModel
public class MyViewModel
    {

        public MyModel MyModel { get; set; }
        ...

和MyModel的类型为

public class MyModel 
    {

        public int MyModelTypeId { get; set; }
        ...

现在,我需要一个DropDownList来填充MyModelTypeId,

这就是我在视图中的内容:

@Html.DropDownList("MyModelTypeId", String.Empty)

并在控制器中:

ViewBag.MyModelTypeId = new SelectList(db.MyModelTypes, "MyModelTypeId", "MyModelTypeName", model.MyModel.MyModelTypeId);

现在,下拉菜单填充得很好,但是在帖子上,所选择的值没有绑定到“MyModel'

我做错了什么

1 个答案:

答案 0 :(得分:2)

下拉列表绑定到您在ViewBag中创建的MyModelTypeId属性,而不是`MyModel'的MyModelTypeId属性。类。

您应该将选择列表存储在MyModel

public class MyModel 
{
    public int MyModelTypeId { get; set; }
    public IEnumerable<SelectListItem> MyModelTypes { get; set; }

将您在控制器中创建的选择列表分配给此属性,然后在视图中呈现下拉列表,将MyModelTypeId作为值将所选项目绑定到,并MyModelTypes as要使用的选择列表:

@Html.DropDownListFor(m => m.MyModel.MyModelTypeId, Model.MyModel.MyModelTypes)

提交表单后,所选值将绑定到MyModel.MyModelTypeId