2011-08-24 65 views
0

我剛剛開始使用MVC3,我有以下情況。在DropDownList中預選

我的應用程序的其他控件的初始註冊頁面包含一個下拉菜單。當用戶完成表單後,表單詳細信息將保存在會話中,然後轉到下一步。他們也可能會回到原來的步驟來重新編輯,在這種情況下,我需要顯示預先選擇適當值的下拉菜單。

我的代碼如下:

Controller: 
public ActionResult Index() 
{ 
    var model = new CompanyDetailsModel(); 
    BindDropDownLists(model); 
    //IF WE HAVE A SESSION THEN PREFILL THE VALUES 
    if(MySession.Current.IFA!=null) 
    model = EditIFAProfileService.returnCompanyDetailSession(MySession.Current.IFA); 
    return View("CreateCompanyDetails", model); 
} 

I am getting the expected values from the model, so for example the 
value model.Salutation is equal to an integer. 

因此,與價值武裝我希望能夠把我的下拉列表的預選值如下:

@Html.DropDownListFor(model => model.SalutationValue, Model.SalutationItems, 
"Please Select", new { @tabindex = "1" }) 

如果我這樣做將SalutationValue的模型值設置爲int,然後我得到一個錯誤,指出

具有該鍵的ViewData項的類型爲「System.Int32」,但必須是「IEnumerable」類型。

任何幫助將不勝感激。 謝謝。

回答

0

如果您正在使用強類型視圖和視圖模型,請不要使用任何ViewData,因爲它們會發生衝突。只需將SalutationValue屬性設置爲某個給定值即可。這裏有一個例子:

public ActionResult Index() 
{ 
    var model = new CompanyDetailsModel(); 
    model.SalutationItems = ... 
    if (MySession.Current.IFA != null) 
    { 
     model.SalutationValue = MySession.Current.IFA; 
    } 
    return View("CreateCompanyDetails", model); 
}