2012-03-25 64 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)