2011-09-01 73 views
0

我的控制器中有以下操作方法。我在這裏有一個多頁嚮導場景。現在當我點擊下一步時,我得到這個「....類型未標記爲序列化」的錯誤信息。我看過有關同一問題的帖子,但無法獲得我的解決方案。未標記爲序列化錯誤,而該類實際上標記爲帶註釋的序列化

public ActionResult startOpenJAccount() 
       { 
         return View(vmJ); 
       } 

for this method the view is something like: 
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> 


<%using (Html.BeginForm("contReg")){ %> 
    <%:Html.Serialize("vmJ", Model) %> 

     <fieldset> 
    <legend> Individual Personal Profile</legend> 
     <table class="col1"> 

      <tr> 
     <td><div class="display-label">Title</div></td> 
     <td><div class="display-field"><%: Html.TextBoxFor(m=>m.newMember.title) %></div></td> 
     </tr> 

      <tr> 
     <td><div class="display-label">First Name</div></td> 
     <td><div class="display-field"><%: Html.TextBoxFor(m=>m.newMember.FirstName)%></div></td> 
      </tr> <tr> 
</table> 

     <div class="command"><input type="submit" name="next" value="Next" /></div> 
     <div class="command"><input type="submit" name="cancel" value="Cancel" /></div> 
    <%}%> 
</fieldset> 

這頁的帖子下面的操作方法:

public ActionResult contReg(string next, string cancel) 
     { 
       if (next != null) 
      { 
       vmJ.members.Add(vmJ.newMember); 
       vmJ.newMember = new Individual(); 
       return RedirectToAction("displayRegInfo"); 
      } 
      if (cancel != null) 
       return RedirectToAction("displayRegInfo"); 
       return RedirectToAction("Index","default"); 
     } 

這爲下一步回報點擊此錯誤。被稱爲「未標記爲可序列化」的類甚至不包含在目前涉及的對象中,而是在同一控制器中的後續行中使用。

由於這一點,我被困住了,請儘快幫助。

+0

這與您的問題無關,但您的操作方法的最後一次返回沒有用處。 –

+0

哪些類未標記爲可序列化(根據您的錯誤?)。另外 - mJ.newMember = new Individual();我也沒用。你正在重定向到一個動作,這些值都將在重定向時丟失,除非在幕後newMember使用TempData這是一個奇怪的解決方案。也堅持微軟命名約定。它使代碼在眼睛上更容易一些。例如vmj.NewMember –

+0

不確定這是否是問題的一部分,但是您的結束字段集標記超出了使用範圍。開放的fieldset標籤在使用中。不知道可能會導致什麼樣的行爲,但我認爲值得指出。 –

回答

0

如果這是一個實體框架對象,你這裏有兩個問題

  1. 我不相信可序列化(從一個實體對象繼承)
  2. 序列化可以造成巨大物體

使用實體框架的POCO模板。將您的類標記爲可在模板中進行序列化.tt代碼或通過與您的類名稱相同的部分類包含[Serializable]

+0

夥計們,請不要忘記這只是一個片段。我的問題是,爲什麼一個註解爲[Serializable]的類導致錯誤消息「未標記爲可序列化」。 – merawi

+0

如果它繼承了別的東西(比如實體類),那麼它可能是導致問題的父類(超類)。 –

相關問題