2017-04-24 35 views
-1

我有一個DropDownList,它不能作爲DropDownListFor工作,因此它已被放棄。MVC如何在DropDownList後面設置模型的值

如何將DropDownList附加爲視圖中項目的模型值。這是我的代碼。

@model DirectoryMVC.Models.get_administrators_Result 

@{ 
    List<SelectListItem> listItems2 = new List<SelectListItem>(); 
    listItems2.Add(new SelectListItem { Text = "Mr.", Value = "Mr." }); 
    listItems2.Add(new SelectListItem { Text = "Ms.", Value = "Ms." }); 
    listItems2.Add(new SelectListItem { Text = "Dr.", Value = "Dr." }); 
    listItems2.Add(new SelectListItem { Text = "Miss", Value = "Miss" }); 
    listItems2.Add(new SelectListItem { Text = "Mrs.", Value = "Mrs." }); 
    listItems2.Add(new SelectListItem { Text = "Rev.", Value = "Rev." }); 

    foreach (SelectListItem li2 in listItems2) 
    { 
     if (li2.Value == this.Model.title) 
     { 
      li2.Selected = true; 
     } 
    } 

    ViewBag.Titles = listItems2; 

    List<SelectListItem> admins = ViewBag.JobTitle; 
    foreach (SelectListItem item in admins) 
    { 
     if (this.Model.admin_code.TrimEnd(' ') == item.Value) 
     { 
      item.Selected = true; 
     } 
     else 
     { 
      item.Selected = false; 
     } 
    } 
    ViewBag.JobTitle = admins; 
} 
     @Html.HiddenFor(m=>m.admin_id) 

     <div class="col-md-1">@Html.DropDownList("Titles") 

     </div> 
     <div class="col-md-2"> @Html.TextBoxFor(m => m.first_name) 
     </div> 
     <div class="col-md-2"> @Html.TextBoxFor(m => m.last_name) 
     </div> 
     <div class="col-md-3"> @Html.DropDownList("JobTitle") 
     </div> 
     <div class="col-md-3 pull-left"> @Html.TextBoxFor(m => m.email) 
     </div> 

在控制器中,admin_code和admin_title。這兩個下拉列表爲空。在查看頁面時適當選擇這些值,但它們沒有正確映射到表單發佈中的模型。

+0

爲什麼在使用'@ Html.DropDownListFor'時它不工作?如果你想將它綁定到一個模型屬性上,你不需要自己設置下拉菜單的選擇值,這樣你就可以避免使用'foreach(listListtemplate2中的SelectListItem li2)'。使用'@ Html.DropDownList(「title」,ViewBag.Titles)'。 [本文](http://www.c-sharpcorner.com/UploadFile/4d9083/binding-dropdownlist-in-mvc-in-various-ways-in-mvc-with-data/)可能會對您有所幫助。 – granit

+0

您沒有向'Html.DropDownList'函數提供任何值..所以我不確定您在渲染頁面中如何看到任何值。 –

+0

@granit你可以在這裏看到我以前的問題。我一起放棄了它。 http://stackoverflow.com/questions/43520636/why-does-this-one-dropdownlistfor-work-and-this-other-one-doesnt –

回答

1

如果這仍是您正在使用的模型:

public partial class get_administrators_Result 
{ 
    public int admin_id { get; set; } 
    public string first_name { get; set; } 
    public string last_name { get; set; } 
    public string title { get; set; } 
    public string email { get; set; } 
} 

那麼你只需要改變@Html.DropDownList("Titles")@Html.DropDownList("Title")。爲了使模型綁定起作用,表單元素需要與模型屬性具有相同的名稱。

作爲一個方面說明,你真的應該使用DropDownListFor - 我得到它它不是第一次爲你工作,但我強烈建議重新審視它。

+0

這需要改變:'ViewBag.Titles = listItems2;'到'ViewBag.Title = listItems2;'和屬性必須在'get_administrators_Result'也可以用'標題',對吧? – granit

+0

不錯,雖然我個人更喜歡指定一個DropDownListFor使用的IEnumerable,而不是依賴一個類似命名的ViewBag項目 - 這些_magical_關係太過於浮躁海事組織。 – sleeyuen

+0

@sleeyuen我發現這些東西可能會變得非常浮躁。 DropDownListFor是一個噩夢,並且這個解決方案工作。 –

相關問題