使用IEnumerable <datetime> </datetime>的ASP.NET MVC SelectList出现问题

时间:2010-09-08 13:42:29

标签: c# .net asp.net asp.net-mvc asp.net-mvc-2

像往常一样,在MVC框架中遇到SelectList问题。由于某种原因,从未设置所选值:

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 个答案:

答案 0 :(得分:1)

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

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