2010-10-29 65 views
1

我有一個簡單的模型類(UserAddress)沒有正確傳遞給HttpPost函數。所有成員數據的數據始終爲空值。MVC2 HttpPost沒有收到數據成員

public class User 
{ 
    public string Name { get; set; } 
} 

public class Address 
{ 
    public string Address1; 
    public string Address2; 
} 

public class UserAddress 
{ 
    public User User; 
    public Address Address; 

    public UserAddress() 
    { 
     User = new User(); 
     Address = new Address(); 
    } 
} 

和一個簡單的觀點:

<table> 
    <tr> 
     <td> 
      <%: Html.LabelFor(model => model.User.Name) %> 
     </td> 
     <td> 
      <%: Html.TextBoxFor(model => model.User.Name) %> 
      <%: Html.ValidationMessageFor(model => model.User.Name) %> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <%: Html.LabelFor(model => model.Address.Address1)%> 
     </td> 
     <td> 
      <%: Html.TextBoxFor(model => model.Address.Address1)%> 
      <%: Html.ValidationMessageFor(model => model.Address.Address1)%> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <%: Html.LabelFor(model => model.Address.Address2)%> 
     </td> 
     <td> 
      <%: Html.TextBoxFor(model => model.Address.Address2)%> 
      <%: Html.ValidationMessageFor(model => model.Address.Address2)%> 
     </td> 
    </tr> 
</table> 

而這裏的代碼:

public ActionResult Index() 
    { 
     UserAddress userAddress = new UserAddress(); 

     return View(userAddress); 
    } 

    [HttpPost] 
    public ActionResult Index(UserAddress userAddress) 
    { 
     return View(userAddress); 
    } 

所有成員變量都爲空;如userAddress.User.Name。

+0

我希望你指定的模型在你看來像這樣System.Web.Mvc.ViewPage 結合。 – Pradeep 2010-10-29 04:30:00

+0

是的,但如果他沒有,他的代碼會給出一個運行時錯誤,而不是一個空的http帖子。 – RPM1984 2010-10-29 04:35:38

回答

1

唯一突出的是我試圖綁定公共成員,而不是屬性。

也許嘗試重構你的類來使用屬性並嘗試。

public class Address 
{ 
    public string Address1 { get; set; } 
    public string Address2 { get; set; } 
} 

public class UserAddress 
{ 
    public User User { get; set; } 
    public Address Address { get; set; } 

    public UserAddress() 
    { 
     User = new User(); 
     Address = new Address(); 
    } 
} 
+0

我即將發佈該答案,但認爲這太明顯了。當然... – RPM1984 2010-10-29 04:39:04

+0

我試過,但內在的類。但是沒有爲UserAddress類嘗試過。 Duhhhh。 – dvallejo 2010-10-29 22:45:59

+0

這是我的問題。我親你! – masty 2011-04-12 05:08:08