2013-02-05 31 views
2

我從內存數據中填充DropDownList並在POST中獲取此錯誤。具有'MaritalStatus'鍵的ViewData項的類型爲'System.String',但必須是'IEnumerable <SelectListItem>'的類型'

Error: The ViewData item that has the key 'MaritalStatus' is of type 'System.String' but must be of type 'IEnumerable'.

控制器: -

// GET: /Application/Create 
public ActionResult Create() 
{ 
    List<SelectListItem> lst = new List<SelectListItem>(); 
    lst.Add(new SelectListItem { Text = "Unmarried", Value = "1" }); 
    lst.Add(new SelectListItem { Text = "Married", Value = "2" }); 
    lst.Add(new SelectListItem { Text = "Widow", Value = "3" }); 
    ViewBag.MaritalStatus = new SelectList(lst, "Value", "Text"); 

    return View(); 
} 

// POST: /Application/Create 
[HttpPost] 
public ActionResult Create(ApplicationForm applicationform) 
{ 
    if (ModelState.IsValid) 
    { 
     db.ApplicationForms.Add(applicationform); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

    return View(applicationform); 
} 

查看: -

<div class="editor-label"> 
    @Html.LabelFor(model => model.MaritalStatus) 
</div> 
<div class="editor-field"> 
    @Html.DropDownList("MaritalStatus") 
    @Html.ValidationMessageFor(model => model.MaritalStatus) 
</div> 

模型屬性: -

[DisplayName("Marital Status")] 
public string MaritalStatus { get; set; } 

任何幫助表示讚賞。

+0

@stephen你認爲這是重複的?這個問題在3年前被問過了,你引用的問題是6個月前問的。 –

+0

這沒有什麼區別。它讓用戶在這個問題上找到另一種答案(這是一個社區維基,並深入解釋了問題所在) –

+0

重複標記問題的整個過程就是告訴大家忽略它,以便他們可以更好地利用他們的時間。這是一位專家在這裏解釋http://meta.stackoverflow.com/questions/260607/how-to-remove-duplicate-mark-from-my-question。所以,從技術上講,你應該將更新的問題標記爲重複。 –

回答

4

好吧,我通過在POST動作中重新填充列表來解決這個問題,這裏是完整的工作代碼。

// 
    // GET: /Application/Create 

    public ActionResult Create() 
    { 
     List<SelectListItem> lst = new List<SelectListItem>(); 
     lst.Add(new SelectListItem { Text = "Unmarried", Value = "Unmarried" }); 
     lst.Add(new SelectListItem { Text = "Married", Value = "Married" }); 
     lst.Add(new SelectListItem { Text = "Widow", Value = "Widow" }); 
     ViewBag.MaritalStatus = new SelectList(lst, "Value", "Text"); 

     return View(); 
    } 

    // 
    // POST: /Application/Create 

    [HttpPost] 
    public ActionResult Create(ApplicationForm applicationform) 
    { 
     if (ModelState.IsValid) 
     { 
      db.ApplicationForms.Add(applicationform); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
     else 
     { 
      List<SelectListItem> lst = new List<SelectListItem>(); 
      lst.Add(new SelectListItem { Text = "Unmarried", Value = "1" }); 
      lst.Add(new SelectListItem { Text = "Married", Value = "2" }); 
      lst.Add(new SelectListItem { Text = "Widow", Value = "3" }); 
      ViewBag.MaritalStatus = new SelectList(lst, "Value", "Text"); 
     } 

     return View(applicationform); 
    } 
相關問題