2010-07-20 5 views
1

Avec ce code, j'ai erreur:référence d'objet non définie à une instance d'un objet

Object reference not set to an instance of an object

<% using (Html.BeginForm("XMLDevicesAddFirmware","ImportXML",FormMethod.Post)) {%> 

<table class="data-table"> 
    <tr> 
     <th>Article Number</th> 
     <th>Firmware</th> 
     <th>Name</th> 
     <th>Order Id</th> 
     <th>Software Version</th> 
    </tr> 

<% int rb = 1;%> 

<% foreach (var item in Model) { %> 
    <tr> 
     <td><%= Html.Encode(item.ArticleNumber) %></td> 
     <td><input id="Firmware" name="<%= Html.Encode(rb)%>" type="text" /></td> 
     <td><%= Html.Encode(item.Name) %></td> 
     <td><%= Html.Encode(item.OrderId) %></td> 
     <td><input id="SoftwareVersion" name="<%= Html.Encode(rb)%>" type="text" /></td> 
    </tr> 
    <% rb = rb + 1;%> 
    <% } %> 

</table> 
<p> 
    <input type="submit" value="Finish" /> 
</p> 
<% } %> 


public ActionResult XMLDevicesAddFirmware() 
{ 
    var dev = from i in XMLEntities.unassigneditems 
       where i.DevOrAcc == true 
       select i; 
    return View(dev); 
} 



[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult XMLDevicesAddFirmware(FormCollection col) 
{ 
    //.... 
    return View(); 
} 

Stack Trace:

[NullReferenceException: Object reference not set to an instance of an object.] 
ASP.views_importxml_xmldevicesaddfirmware_aspx.__RenderContent2(HtmlTextWriter __w,  Control parameterContainer) in c:\Documents and Settings\Ognjen\My Documents\Visual Studio 2008\Projects\MvcKVteam - radna verzija_18_07\MvcKVteam - radna verzija\MvcKVteam\Views\ImportXML\XMLDevicesAddFirmware.aspx:36 
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 
ASP.views_shared_site_master.__Render__control1(HtmlTextWriter __w, Control parameterContainer) in c:\Documents and Settings\Ognjen\My Documents\Visual Studio 2008\Projects\MvcKVteam - radna verzija_18_07\MvcKVteam - radna verzija\MvcKVteam\Views\Shared\Site.Master:104 
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

L'erreur se produit pendant la liaison ou lors de la publication? –

+0

après cliquez sur soumettre bouton – Ognjen

+0

Peut-on voir le StackTrace –

Répondre

1

Si le modèle n'est pas valide et que vous ne parvenez pas à faire exécuter une partie de votre code dans le

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult XMLDevicesAddFirmware(FormCollection col) 
{ 
    //.... 
    return View(); 
} 

vous devez retourner même modèle à la vue()

return View(dev); 

comme u fait avec l'action get,

sinon la vue ne peut pas afficher parce que le modèle est nul.

quand u ne return View(dev); vue va rendre bien, et si u a fait ModelState.AddModelError(/**/); la vue montrera des erreurs de validation

0

est la méthode publique ActionResult XMLDevicesAddFirmware (chaîne du micrologiciel, chaîne SoftwareVersion) en cours d'exécution. Je ne peux pas voir que votre formulaire est en train de poster sur cette méthode, je veux dire, il n'y a pas de Firmware chaîne, la chaîne SoftwareVersion dans la route.

essayer cette

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult XMLDevicesAddFirmware(FormCollection coll) 
    { 
     //.... 
     return View(); 
    } 

modifier: ou sur le Html.BeginForm Ajouter un nouveau {Firmware = Model.Firmware, softwareversion = Model.SoftwareVersion}

2

Ne pas oublier de passer le modèle à la vue:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult XMLDevicesAddFirmware(string Firmware, string SoftwareVersion) 
{ 
    var model = new SomeModel(); 
    return View(model); 
} 
+0

C'est pourquoi j'ai supprimé mon premier post .. Le modèle est passé :) –

+1

D'après ce que je peux voir, vous ne passez pas le modèle dans l'action POST. Vous ne le transmettez que dans l'action GET, ce qui bien sûr n'est pas suffisant car les deux rendent la même vue que ** nécessite ** le modèle. –

Questions connexes