4
respostas

Duvida com o PropertyValues

Como faço para alterar o valor de uma variável de outra classe pelo Property? Não estou conseguir alterar a

Contato.TelefoneCel = model.Contato.TelefoneCel

Segue o código completo...

public ActionResult Adiciona(UsuarioModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    WebSecurity.CreateUserAndAccount(model.Nome, model.Senha,
                         new { 
                    Nome = model.Nome,
                    Email = model.Email,
                    Ra = model.Ra,
                    DataNascimento = model.DataNascimento,
                    Contato.TelefoneCel = model.Contato.TelefoneCel

                    });


                    return RedirectToAction("Index");
                }
                catch (MembershipCreateUserException e)
                {
                    ModelState.AddModelError("usuario.Invalido", e.Message);
                    return View("Form", model);
                }

            }
            else
            {
                return View("Form", model);
            }

        }
4 respostas

Olá, Vinicius!

Para analisar melhor, precisamos do código da classe Contato. Pode postar aqui pra gente? Obrigado!

Segue a classe Contato...

namespace SugestoesWeb.Entidades
{
    public class Contato
    {
        public int Id { get; set; }

        public string TelefoneFixo { get; set; }

        public string TelefoneCel { get; set; }
    }
}

Classe Usuario

namespace SugestoesWeb.Entidades
{
    public class Usuario
    {
        public int Id { get; set; }

        [Required]
        public string Nome { get; set; }

        [Required, EmailAddress]
        public string Email { get; set; }

        [Required]
        public int Ra { get; set; }

        [Required]
        public string Senha { get; set; }


        public DateTime DataNascimento { get; set; }


        public Permissao Permissao { get; set; }


        public virtual CategoriaUsuario CategoriaUsuario { get; set; }

        [Required]
        public virtual Seguranca Seguranca { get; set; }

        [Required]
        public virtual Contato Contato { get; set; }
    }
}

Classe UsuarioModel

namespace SugestoesWeb.Models
{
    public class UsuarioModel
    {
        [Required]
        public string Nome { get; set; }

        [Required, EmailAddress]
        public string Email { get; set; }

        [Required]
        public int Ra { get; set; }

        public DateTime DataNascimento { get; set; }

        public Permissao Permissao { get; set; }

        public virtual CategoriaUsuario CategoriaUsuario { get; set; }

        [Required]
        public virtual Seguranca Seguranca { get; set; }

        [Required]
        public virtual Contato Contato { get; set; }

        [Required]
        public string Senha { get; set; }

        [Compare("Senha")]
        public string ConfirmacaoSenha { get; set; }

    }
}

Consegui resolver criando um novo objeto do tipo Contato. Acredito que o PropertyValues recebe um objeto do tipo Contato né?

public ActionResult Adiciona(UsuarioModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    Contato contato = new Contato
                    {
                        TelefoneCel = model.Contato.TelefoneCel,
                        TelefoneFixo = model.Contato.TelefoneFixo
                    };

                    WebSecurity.CreateUserAndAccount(model.Nome, model.Senha,
                    new
                    {
                        Nome = model.Nome,
                        Email = model.Email,
                        Ra = model.Ra,
                        DataNascimento = model.DataNascimento,
                        Permissao = model.Permissao,
                        Contato = contato
                    });


                    return RedirectToAction("Index");
                }
                catch (MembershipCreateUserException e)
                {
                    ModelState.AddModelError("usuario.Invalido", e.Message);
                    return View("Form", model);
                }

            }
            else
            {
                return View("Form", model);
            }

        }

Vinicius, quando você disse que "não estava conseguindo alterar TelefoneCel " na linha Contato.TelefoneCel = model.Contato.TelefoneCel, qual era o problema? Qual era o erro gerado?