HttpPost MVC2 не получает данные членов - PullRequest
1 голос
/ 29 октября 2010

У меня есть простой класс модели (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.

1 Ответ

1 голос
/ 29 октября 2010

Единственное, что выделяется для меня, это то, что вы пытаетесь связать общедоступные члены, а не свойства.

Возможно, попробуйте рефакторинг ваших классов, чтобы использовать свойства, и попробуйте.

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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...