2012-10-11 50 views
2

有人能告诉我我在做什么在Dropdownlist查看错误?我认为它期望SelectList的下拉列表?先谢谢你。WebGrid中的下拉列表 - MVC4

我的模型:

public class AppointmentModel 
    { 
     public int CustomerID { get; set; } 
     public string LastName { get; set; } 
     public string FirstName { get; set; }   
     public List<DateTime> ApptDates { get; set; } 
    } 

查看:

@{ 
    var grid = new WebGrid(Model, rowsPerPage: ViewBag.RowsPerPage);  
    @grid.GetHtml(columns: grid.Columns(
     grid.Column(columnName: "LastName", header: "Last Name", canSort: true, format: @<text>@item.LastName</text>), 
     grid.Column(columnName: "LastName", header: "First Name", canSort: true, format: @<text>@item.Firstname</text>), 
     grid.Column(columnName: "ApptDates", header: "Appointment Dates", format: @Html.DropDownList(@item.ApptDates)) 
     ));            
} 

以下更改解决了该问题:

public class AppointmentModel 
    { 
     public int CustomerID { get; set; } 
     public string LastName { get; set; } 
     public string FirstName { get; set; }   
     public DateTime ApptDt { get; set; } 
     public IEnumerable<SelectListItem> ApptDatesSelectList { get; set; } 
    } 

查看

@{ 
    var grid = new WebGrid(Model, rowsPerPage: ViewBag.RowsPerPage);  
    @grid.GetHtml(columns: grid.Columns(
     grid.Column(columnName: "LastName", header: "Last Name", canSort: true, format: @<text>@item.LastName</text>), 
     grid.Column(columnName: "LastName", header: "First Name", canSort: true, format: @<text>@item.Firstname</text>), 
     grid.Column(columnName: "ApptDates", header: "Appointment Dates", format: @<text>@Html.DropDownList("ApptDt", (IEnumerable<SelectListItem>)@item.ApptDatesSelectList)</text>) 
     ));            
} 
+0

是ApptDates日期的委任名单还是对潜在的约会日期列表? – Maess

+0

AppDates是预约日期的列表。 – rk1962

回答

3

假设回答我的意见是,每次约会都有一个日期,你首先需要一个属性添加到模型的具体日期:

public class AppointmentModel 
    { 
     public int CustomerID { get; set; } 
     public string LastName { get; set; } 
     public string FirstName { get; set; } 
     public DateTime AppointmentDate {get; set;}   
     public List<DateTime> ApptDates { get; set; } 
    } 

然后你需要你的潜在的约会在SelectList一次你这样做,你可以实现像这样:

@{ 
    var grid = new WebGrid(Model, rowsPerPage: ViewBag.RowsPerPage);  
    @grid.GetHtml(columns: grid.Columns(
     grid.Column(columnName: "LastName", header: "Last Name", canSort: true, format: @<text>@item.LastName</text>), 
     grid.Column(columnName: "LastName", header: "First Name", canSort: true, format: @<text>@item.Firstname</text>), 
     grid.Column(columnName: "ApptDates", header: "Appointment Dates", format: @<text> @Html.DropDownList(@item.AppointmentDate, yourSelectList)</text>) 
     ));            
} 
+0

我会尽力让你知道结果。谢谢。 – rk1962

+0

您的解决方案奏效,谢谢。我已经更新了描述中的更改。 – rk1962

+0

我无法接收控制器中的选定属性。选定列表(包含)类型与我要填写的属性相同。可能是什么原因 – albatross