【发布时间】:2011-04-04 10:12:12
【问题描述】:
我遇到了帮助器 Html.ListBoxFor() 的问题。
这是我的 ViewModel:
public class NewReservation
{
public SelectList AvailableServiceDates { get; set; }
public DateTime SelectedServiceDate { get; set; }
}
这是我的操作方法:
public virtual ActionResult New()
{
NewReservation newReservation = new NewReservation();
newReservation.AvailableServiceDates = new SelectList(nhSession.Linq<Service>().Select(x => x.DateTime).Distinct());
return View(newReservation);
}
在我看来:
<%:Html.ListBoxFor(x => x.SelectedServiceDate, Model.AvailableServiceDates) %>
这是一个例外:
值不能为空。参数名称: 来源
堆栈跟踪:
[ArgumentNullException: 值不能 为空。参数名称:source]
System.Linq.Enumerable.Cast(IEnumerable 来源)+4177011
System.Web.Mvc.Html.SelectExtensions.SelectInternal(HtmlHelper htmlHelper,字符串选项标签,字符串 名称,IEnumerable1 selectList, Boolean allowMultiple, IDictionary2 htmlAttributes) +723
System.Web.Mvc.Html.SelectExtensions.ListBoxHelper(HtmlHelper htmlHelper,字符串名称,IEnumerable1 selectList, IDictionary2 htmlAttributes) +47
System.Web.Mvc.Html.SelectExtensions.ListBoxFor(HtmlHelper1 htmlHelper, Expression1 表达式, IEnumerable1 selectList, IDictionary2 htmlAttributes) +113
System.Web.Mvc.Html.SelectExtensions.ListBoxFor(HtmlHelper1 htmlHelper, Expression1 表达式, IEnumerable`1 selectList) +85
ASP.views_reservation_new_aspx.__RenderMainContent(HtmlTextWriter __w,控制参数容器)在 c:\code\GTCC Culinary 预订\src\CulinaryReservation.WebMVC\Views\Reservation\New.aspx:11 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter 作家,ICollection 儿童)+109
System.Web.UI.Control.RenderChildren(HtmlTextWriter 作家)+8
System.Web.UI.Control.Render(HtmlTextWriter 作家)+10
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter 作家,ControlAdapter 适配器)+27
System.Web.UI.Control.RenderControl(HtmlTextWriter 作家,ControlAdapter 适配器)+100
System.Web.UI.Control.RenderControl(HtmlTextWriter 作家)+25
ASP.views_shared_site_master.__Render__control1(HtmlTextWriter __w,控制参数容器)在 c:\code\GTCC Culinary 预订\src\CulinaryReservation.WebMVC\Views\Shared\Site.Master:66 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter 作家,ICollection 儿童)+109
System.Web.UI.Control.RenderChildren(HtmlTextWriter 作家)+8
System.Web.UI.Control.Render(HtmlTextWriter 作家)+10
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter 作家,ControlAdapter 适配器)+27
System.Web.UI.Control.RenderControl(HtmlTextWriter 作家,ControlAdapter 适配器)+100
System.Web.UI.Control.RenderControl(HtmlTextWriter 作家)+25
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter 作家,ICollection 儿童)+208
System.Web.UI.Control.RenderChildren(HtmlTextWriter 作家)+8
System.Web.UI.Page.Render(HtmlTextWriter 作家)+29
System.Web.Mvc.ViewPage.Render(HtmlTextWriter 作家)+56
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter 作家,ControlAdapter 适配器)+27
System.Web.UI.Control.RenderControl(HtmlTextWriter 作家,ControlAdapter 适配器)+100
System.Web.UI.Control.RenderControl(HtmlTextWriter 作家)+25
System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔值 includeStagesAfterAsyncPoint) +3060
This post 描述了同样的问题。就像那篇文章一样,如果我将我的 NewReservation.SelectedServiceDate 从 DateTime 更改为字符串,那么一切似乎都有效。但我读过的所有内容都表明这是一个应该在 MVC2 候选版本中修复的错误。
我做错了吗?我不希望属性的类型是字符串,它需要是 DateTime。我不应该能够使用反映我的问题的对象吗?
【问题讨论】:
标签: c# .net asp.net asp.net-mvc