2010-07-08 58 views
0

我在我的控制器中有以下操作。第一個(頂部)Edit工作正常,並提供正確的值。然而,在第二個,即'返回'Edit中,模型的每個屬性都是默認值,即ref類型爲null,值類型爲零。我檢查了HTTP發佈數據,它具有正確命名的所有屬性並具有正確的值。什麼可能是錯的?空值返回到控制器編輯操作

控制器摘錄:

 [Authorize(Order = 0, Roles = "Requester, Controller")] 
     public ActionResult Edit(int id) 
     { 
      JobCardViewData viewData = ViewDataFactory.CreateBaseViewData<JobCardViewData>("Installation Details"); 
      viewData.JobCard = new JobCardService().GetById(id); 
      return View(viewData); 
     } 

     [HttpPost] 
     public ActionResult Edit(JobCard model) 
     { 
      try 
      { 
       new JobCardService().Update(model); 
       var x = RedirectToAction("Index"); 
       return RedirectToAction("Index"); 
      } 
      catch (Exception) 
      { 

       return RedirectToAction("Edit", new {id = model.InstallationNumber}); 
      } 
     } 

查看摘錄:

 <div class="editor-label"> 
      <%: Html.LabelFor(model => model.JobCard.Name) %> 
     </div> 
     <div class="editor-field"> 
      <%: Html.TextBoxFor(model => model.JobCard.Name) %> 
      <%: Html.ValidationMessageFor(model => model.JobCard.Name) %> 
     </div> 

     <div class="editor-label"> 
      <%: Html.LabelFor(model => model.JobCard.Surname) %> 
     </div> 
     <div class="editor-field"> 
      <%: Html.TextBoxFor(model => model.JobCard.Surname) %> 
      <%: Html.ValidationMessageFor(model => model.JobCard.Surname) %> 
     </div> 
+0

你可能只是顯示生成的HTML看起來像什麼?也許模型看起來像什麼? – 2010-07-09 12:52:34

回答

2

菲爾Using ViewModel Pattern with MVC 2 Strongly Typed HTML Helpers

參考這個答案當您使用強類型的輔助抗類型,助手創建表單字段假設這是你發佈到類型。當類型不匹配時,就會出現問題。

在這種情況下,發佈到(JobCard)的類型與最初創建的視圖的類型不同(JobCardViewData)。

嘗試將方法簽名更改爲ffg,並且我幾乎可以肯定JobCard值將填充到模型中。

[HttpPost] 
public ActionResult Edit(JobCardViewData model) 
{ ... } 

菲爾提出了兩種方法可以用來解決這個問題。

+0

http://stackoverflow.com/questions/2494940/custom-viewmodel-with-mvc-2-strongly-typed-html-helpers-return-null-object-on-cre/2500327#2500327 – Ahmad 2010-07-09 13:36:49

+0

哈!你完全正確。我盯着代碼大約15分鐘,但沒看到它。數據正在到達服務器,但不是可以自動綁定到action方法中的參數的格式。 – a7drew 2010-07-09 15:38:33

0

您可以檢查使用招(或別的)的原始HTTP POST的內容,並確認值實際上發送到Web服務器?這是獲取服務器值還是將值綁定到對象的問題?

+0

你是第二個推薦的人,我會盡快嘗試,謝謝,但是關於綁定,我使用'TextBoxFor',而不是'綁定'方法,所以我不知道如果問題是綁定。 – ProfK 2010-07-09 07:56:01

+0

請參閱我的編輯。該帖子(使用Firebug)包含所有正確的數據。 – ProfK 2010-07-09 12:11:54

相關問題