2010-09-08 85 views
1

像往常一样,在MVC框架中SelectList有问题。由于某种原因,选定的值从未设置:ASP.NET MVC SelectList与IEnumerable之间的问题<DateTime>

public class MyViewModel 
{  
    public DateTime? SelectedServiceTime { get; set; } 
    public IEnumerable<DateTime> AvailableServiceTimes { get; set; } 
    public SelectList ServiceTimesList 
    { 
     get 
      { 
       SelectList selectList = new SelectList(AvailableServiceTimes, SelectedServiceTime.ToString()); 
       return selectList; 
      } 
    } 
} 

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MyViewModel>" %> 
<asp:Content ID="MainContent" ContentPlaceHolderID="MainContentPlaceHolder" runat="server"> 
    <%using (Html.BeginForm()) { %> 

     <%:Html.DropDownListFor(x => x.SelectedServiceTime, Model.ServiceTimesList, new { size = 6 }) %><br /> 
     <input type="submit" name="nextButton" value="Next" />  

    <%} %> 
</asp:Content> 

回答

1

这可能是日期格式解析的问题。尝试使用"yyyy-MMM-dd"格式化日期,而不是依靠.ToString()。无论浏览器和服务器中的文化是什么(假设你只关心日期,如果需要添加时间部分),这种解析都是正确的。

如果这不起作用,请尝试添加DateTime.MinValue之类的默认值并检查该值,而不是使用DateTime?。这通常不是一个问题,但值得尝试解决问题的地方。