У меня есть простой класс модели (UserAddress), который не передается должным образом в функцию 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);
}
Все переменные-члены имеют значение null; например userAddress.User.Name.