-1

使用 MVC 3。

我有一个下拉列表,其中填充性别,文本“男性”的值为“M”,文本“女性”的值为“F”。

现在,当我提取记录时,它没有根据记录的值设置值。

我有以下代码。

@if(Model != null)
{
    @Html.DropDownListFor(model => model.GENDER, 
        new SelectList(ViewBag.gender, "Value", "key", Model.GENDER))
}
else
{
    @Html.DropDownListFor(model => model.GENDER, 
        new SelectList(ViewBag.gender, "Value", "Key"))
}

上面的代码意味着当页面第一次加载时它没有性别字段的值,因为模型是空的,所以只需填充列表,当提取人员时,即当模型不为空时,它填充并设置值等于model.gender。但它没有设置值。可能是什么问题呢?

4

1 回答 1

1

您是否将 NULL 对象(您的模型)传递给您的视图?你要在视图中写多少地方@if(Model != null).. .这不会弄乱干净代码的概念。?

我想这就是你应该这样做的方式。无论是第一次(创建实体)还是编辑时间,您都应该始终将模型/视图模型传递给视图。像这样的东西

public ActionResult Create()
{
   CustomerViewModel model=new CustomerViewModel();
   return View(model);
}

对于 Edit 操作,您将填充了数据的 Model/ViewModel 对象。

public ActionResult Edit(int id)
{
   CustomerViewModel model=new CustomerViewModel();
   model=CustomerService.GetCustomerFromId(id);
   return View(model);
}

在视图中,你像这样使用它

@model CustomerViewModel

@Html.DropDownListFor(model => model.GENDER, 
        new SelectList(ViewBag.gender, "Value", "key", Model.GENDER))
于 2012-05-24T13:20:03.693 回答