2012-05-24 36 views
-1

與MVC工作被提取設置視圖下拉列表值3當記錄在MVC

我有性別填充值爲「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 。但它並沒有設定價值。可能是什麼問題呢?

回答

1

您是否將NULL對象(您的模型)傳遞給您的視圖?這個視圖中有多少地方是你要寫的@if(Model != null).. .這是不是會干擾乾淨代碼的概念。 ?

我想這是你應該怎麼做的。無論是第一時間(創建實體)還是編輯時間,都應該始終將模型/視圖模型傳遞給視圖。一些像這樣的東西

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

對於編輯操作,您填充填充了數據的模型/視圖模型對象。

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)) 
+0

肯定。我已經完成了你所說的方式,但仍然沒有給「F」女性設置價值。 Alwaysit顯示「男性」 –

+0

您確定'model.GENDER'有價值嗎? – Shyju

+0

是的。當我調試並看到它顯示其價值... –