2014-02-07 115 views
1

我需要幫助來綁定模型的下拉值。使用mvc4綁定下拉列表

Model.cs

public class BloodGroup 
{ 
    public BloodGroup() 
    { 
     ActionsList = new List<SelectListItem>(); 
    } 
    [Display(Name="Blood Group")] 
    public int Group { get; set; } 
    public IEnumerable<SelectListItem> ActionsList { get; set; }  
} 

public class ActionType 
{ 
    public int GroupId { get; set; } 
    public string BloodGroup { get; set; } 
} 

在控制器:

List<ActionType> actionType = GetCourses(); 
bGroup.ActionsList = from action in actionType 
          select new SelectListItem 
          { 
           Text = action.BloodGroup, 
           Value = ((int)action.GroupId).ToString(), 
           Selected = action.BloodGroup.Equals("A+")?true:false 
          }; 
return view; 

public List<ActionType> GetCourses() 
{ 
     return new List<ActionType> { 
        new ActionType() { GroupId = 1, BloodGroup = "A+"}, 
        new ActionType() { GroupId = 2, BloodGroup = "B+"}, 
        new ActionType() { GroupId = 3, BloodGroup = "O+" }, 
        new ActionType() { GroupId = 4, BloodGroup = "AB+" }, 
        new ActionType() { GroupId = 5, BloodGroup = "A-"}, 
        new ActionType() { GroupId = 6, BloodGroup = "B-"}, 
        new ActionType() { GroupId = 7, BloodGroup = "O-" }, 
        new ActionType() { GroupId = 8, BloodGroup = "AB-" } 
      }; 
    } 

它成功地返回來查看。但在綁定下拉列表中查看時會引發錯誤。

鑑於

@model MyMVC.Models.BloodGroup 

@Html.DropDownListFor(m => m.Group, new SelectList(Model.ActionsList, "Value", "Text",true), "-- Select --")</li> 

它返回錯誤。

未將對象引用設置爲對象的實例。

模型 .ActionsList設置爲空。

我不知道它爲什麼顯示爲null,儘管我繼承了該模型。

我需要關於如何選擇列表的值綁定幫助到下拉

回答

1

您需要BloodGroup類的實例傳遞給視圖在你的操作方法,象下面這樣:

public ActionResult YourAction() 
{ 
     List<ActionType> actionType = GetCourses(); 
     var model = new BloodGroup() 
     { 
      ActionsList = (from action in actionType 
       select new SelectListItem 
       { 
        Text = action.BloodGroup, 
        Value = ((int) action.GroupId).ToString(), 
        Selected = action.BloodGroup.Equals("A+") 
       }) 
     }; 
     return View(model); 
} 

然後在你的視圖:

@model BloodGroup  
@Html.DropDownListFor(m => m.Group, Model.ActionsList,"-- Select --") 

通知

使用上面的示例,它會向您顯示沒有錯誤的視圖,但downdownList中的選定項目將正確顯示。爲了正確地顯示所選擇的項目,你需要Grop屬性的類型更改爲String,如下圖所示:

public class BloodGroup 
{ 
    // 
    [Display(Name = "Blood Group")] 
    public string Group { get; set; } 
    // 
} 

然後用上述同樣的操作方法,讓你的看法一樣:

@model BloodGroup 
@Html.DropDownList("Group", Model.ActionsList, "-- Select --") 
+0

我試着像這但是同樣的錯誤拋出。該錯誤來自View。模型沒有實例化 – NatrajS

+0

林的代碼似乎沒問題,你確定你是在正確的視圖(匹配的動作)? – OuSs

+0

感謝您的幫助。現在它工作正常。 – NatrajS