J'ai un formulaire dans mon application Asp.Net MVC qui renvoie une exception de référence null à la ligne suivante, mais seulement après des erreurs de postback:Null Reference Exception et le ?? Opérateur
<%= Html.TextArea("Description", Model.Evt.Description ?? "")%>
La chaîne La description est en effet nulle, mais mon attente est que si Model.evt.Description
est null
alors "" sera affiché dans le TextArea
. Pourquoi fait-il cela quand il fonctionne bien sur le chargement initial du formulaire? La seule différence est que le type de ViewUserControl est rempli à partir d'un nouvel objet pour le chargement initial et l'objet de modèle sur le rechargement de publication.
Qu'est-ce qui me manque?
La Trace de la pile est la suivante:
[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
Ce serait génial d'avoir un ??? opérateur qui effectue une vérification null en cascade. –
Imprimez sur une console ou un fichier journal les valeurs de chaque pièce, dans une instruction d'impression distincte, et voyez quand vous obtenez une impression NULL. Ou, mettez une instruction if pour vérifier les deux premiers pour vous assurer qu'ils ne sont pas nuls en premier. –