2010-07-20 75 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

相關問題