2010-07-20 78 views
1

有了这个代码的实例,我有错误:对象引用未设置到对象

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(); 
} 

堆栈跟踪:

[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

是否发生错误的验证错误? – 2010-07-20 11:12:27

+0

点击提交按钮 – Ognjen 2010-07-20 11:14:47

+0

我们可以看到StackTrace – 2010-07-20 11:35:04

回答

1

如果模型是无效的,你不能这样做在

执行一些代码的
[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult XMLDevicesAddFirmware(FormCollection col) 
{ 
    //.... 
    return View(); 
} 

需要同型号返回查看()

return View(dev); 

像你那样与取得动作,

否则视图无法显示,因为模型为空。

当u做return View(dev);视图将呈现精细,如果ü没有ModelState.AddModelError(/**/);视图将显示在结合或回传

0

是方法公众的ActionResult XMLDevicesAddFirmware(串固件,字符串SoftwareVersion)被击中。我看不到你的表单发回这个方法,我的意思是,路由中没有字符串Firmware,字符串SoftwareVersion。

试试这个

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

编辑:或在Html.BeginForm添加新{固件= Model.Firmware,SoftwareVersion = Model.SoftwareVersion}

2

不要忘了模型传递到观点:

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

这就是为什么我删除了我的第一篇文章.. 。该模型正在通过:) – 2010-07-20 11:29:42

+1

从我可以看到你没有在POST动作中传递模型。您只在GET操作中传递它,这当然是不够的,因为它们都呈现**需要**模型的相同视图。 – 2010-07-20 11:31:12

相关问题