像往常一样,在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>
答案 0 :(得分:1)
这可能是日期格式解析的问题。尝试使用"yyyy-MMM-dd"
格式化日期,而不是依赖.ToString()
。无论浏览器和服务器中的文化是什么,这都会正确解析(假设您只关心日期,如果需要,请添加时间部分)。
如果这不起作用,请尝试添加DateTime.MinValue
之类的默认值并检查,而不是使用DateTime?
。这通常不是问题,但值得尝试尝试解决问题所在。