Десериализация Html.Serialize введение ViewModel - PullRequest
0 голосов
/ 17 января 2012

У меня есть View Model с внутренним свойством ViewModel Address.

public class CommonViewModel{

public AddressViewModel PreviouslyAddress { get; set; }

}

And Address:

 [Serializable]
    public class AddressViewModel 
    {
        public string Address1 { get; set; }

        public string Address2 { get; set; }

        public string City { get; set; }

        public string Prefix { get; set; }

        public string ZipCode { get; set; }
}

Я хочу сериализовать его и получить десериализацию на POST.

Я использую:

@Html.Serialize("PreviouslyAddress", Model.PreviouslyAddress)

Но во всех примерах они используют Атрибут DeserializeAttribute, который может быть реализован только в параметрах метода.

Пример введите описание ссылки здесь

РЕДАКТИРОВАНИЕ

Как я могу сделать это без создания пользовательского бандинга и отправки части моей модели в качестве параметра.

    [HttpPost]              
public ActionResult Register([DeserializeAttribute] AddressViewModel user, FormCollection userForm)
{
    TryUpdateModel(user, userForm.ToValueProvider());

Например, если это возможно, я хочу что-то вроде этого:

[HttpPost]              
public ActionResult Register(CommonViewModel model)
{
    TryUpdateModel(user, userForm.ToValueProvider());

 public class CommonViewModel{

        [DeserializeAttribute]
        public AddressViewModel PreviouslyAddress { get; set; }

        }

1 Ответ

3 голосов
/ 17 января 2012

Вы можете использовать класс MvcSerializer для десериализации вручную некоторой строки обратно в модель:

var serializer = new MvcSerializer();
var value = Request["previouslyAddress"]; // this is the contents of the hidden field
var address = (AddressViewModel)serializer.Deserialize(value, SerializationMode.Signed);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...