我的Asp.Net MVC应用程序中有一个表单,它在以下行返回Null引用异常,但仅在回发错误之后:
<%= Html.TextArea("Description", Model.Evt.Description ?? "")%>
字符串描述确实为空,但我的期望是如果Model.evt.Description
为null
,那么“{”将显示在TextArea
中。为什么它在最初加载表单时工作正常呢?
唯一的区别是ViewUserControl的类型是从初始加载的新对象和回发重新加载的模型对象填充的。
我错过了什么?
Stack Trace如下:
[NullReferenceException: Object reference not set to an instance of an object.]
System.Web.Mvc.HtmlHelper.GetModelStateValue(String key, Type destinationType) +63
System.Web.Mvc.Html.TextAreaExtensions.TextAreaHelper(HtmlHelper htmlHelper, String name, Boolean useViewData, String value, IDictionary`2 implicitAttributes, IDictionary`2 explicitParameters, IDictionary`2 htmlAttributes) +261
System.Web.Mvc.Html.TextAreaExtensions.TextArea(HtmlHelper htmlHelper, String name, String value, IDictionary`2 htmlAttributes) +213
System.Web.Mvc.Html.TextAreaExtensions.TextArea(HtmlHelper htmlHelper, String name, String value) +61
ASP.views_events_eventform_ascx.__Render__control1(HtmlTextWriter __w, Control parameterContainer) in c:\Documents and Settings\Richard Box\My Documents\Visual Studio 2008\Projects\EventsManager\EventsManager\Views\Events\EventForm.ascx:64
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +256
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
System.Web.UI.Control.Render(HtmlTextWriter writer) +10
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +134
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
System.Web.UI.Page.Render(HtmlTextWriter writer) +29
System.Web.Mvc.ViewPage.Render(HtmlTextWriter writer) +59
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1266
答案 0 :(得分:9)
看起来Model或Evt是null,实际上不是Description字段。
答案 1 :(得分:1)
Evt是否也可能为空?这将解释异常
答案 2 :(得分:1)
我的错误,但我会说在这种情况下错误信息很差,我不知道为什么这条线被突出显示...
在我的自定义模型Binder中,我创建了一个Event
对象并使用表单中的信息填充它,但是因为Event对象由其他几个对象组成,其中一些对象是EntitySet
我需要的确保在尝试填充它们之前构建其中的每一个。
我应该注意到情况并非如此,并且在控制器中捕获的模型绑定器中引发了异常。引发异常的对象和属性与Model.Evt.Description
完全无关,所以我不知道为什么在显示视图的错误中突出显示了这一点。