2012-03-25 95 views
3

我想在ASP.NET MVC3視圖中創建一個下拉列表,該列表基於鏈接到模型的允許值的列表。如何在ASP.NET MVC3中創建下拉列表?

到目前爲止,在我的模型,我有:

namespace NS 
{ 
    public class Model 
    { 
     public Model() 
     { 
      Status = new List<SelectListItem>(); 
      Status.Add(new SelectListItem { Text = "New", Value = "New" }); 
      Status.Add(new SelectListItem { Text = "PaymentPending", Value = "PaymentPending" }); 
      Status.Add(new SelectListItem { Text = "PaymentProcessed", Value = "PaymentProcessed" }); 
      Status.Add(new SelectListItem { Text = "Dispatched", Value = "Dispatched" }); 
      Status.Add(new SelectListItem { Text = "Complete", Value = "Complete" }); 
      Status.Add(new SelectListItem { Text = "Cancelled", Value = "Cancelled" }); 
     } 

     public List<SelectListItem> Status { get; set; } 
    } // class Model 
} // NS 

(顯然修剪不必要的東西了)

然後在我看來,我有:

@model NS.Model 
@Html.DropDownListFor(Model.Status) 

正如在SO上看到的答案似乎表明。但我得到一個錯誤:

Compiler Error Message: CS1501: No overload for method 'DropDownListFor' takes 1 arguments

任何提示非常讚賞。

回答

5

錯誤消息是不言自明的,DropDownListFor helper需要兩個參數。

修改你的模型必須包含選定值

public class Model 
{ 
public Model() { 
    Status = new List<SelectListItem>(); 
    Status.Add(new SelectListItem { Text = "New", Value = "New" }); 
    Status.Add(new SelectListItem { Text = "PaymentPending", Value = "PaymentPending" }); 
    Status.Add(new SelectListItem { Text = "PaymentProcessed", Value = "PaymentProcessed" }); 
    Status.Add(new SelectListItem { Text = "Dispatched", Value = "Dispatched" }); 
    Status.Add(new SelectListItem { Text = "Complete", Value = "Complete" }); 
    Status.Add(new SelectListItem { Text = "Cancelled", Value = "Cancelled" }); 
} 
public List<SelectListItem> Status { get; set; } 
public string SelectedVal{get;set;} 
} 

然後在視圖屬性

@NS.Model 
@Html.DropDownListFor(x=> x.SelectedVal, x.Status) 
0

第一個參數是模型中下拉列表的選定值。第二個值是狀態列表。

@Html.DropDownListFor(x=> x.SelectedValue, Model.Status)