2
after saving an object in the database, the view continues to show the fields filled!
<fieldset>
<legend>Endereco:</legend>
@Html.ValidationSummary()
@Html.HiddenFor(e => e.CodigoPessoa, new { id = "Pessoa", name = "Pessoa" })
@Html.Label("Cep: ")
@Html.TextBoxFor(e => e.CEP, new { maxlength = "9", id = "Cep", name = "Cep", onchange = "findCEP()" })
<br />
@Html.Label("Endereco: ")
@Html.TextBoxFor(e => e.DescricaoEndereco, new { maxlength = "50", id = "Endereco", name = "Endereco" })
<br />
@Html.Label("Número: ")
@Html.TextBoxFor(e => e.Numero, new { maxlength = "50", id = "Numero", name = "Numero" })
<br />
@Html.Label("Complemento: ")
@Html.TextBoxFor(e => e.Complemento, new { maxlength = "50", id = "Complemento", name = "Complemento" })
<br />
@Html.Label("Bairro: ")
@Html.TextBoxFor(e => e.Bairro, new { maxlength = "50", id = "Bairro", name = "Bairro" })
<br />
@Html.Label("Cidade: ")
@Html.TextBoxFor(e => e.Cidade, new { maxlength = "40", id = "Cidade", name = "Cidade" })
<br />
@Html.Label("UF: ")
@Html.DropDownListFor(e => e.UF, Model.UFList, new { id = "UF", name = "UF" })
<br />
function adicionarEndereco() {//Função Ajax que obtem os valores dos campos e joga na action via post
var codigoPessoa = document.getElementById("CodigoPessoa").value;
var cep = document.getElementById("Cep").value;
var endereco = document.getElementById("Endereco").value;
var numero = document.getElementById("Numero").value;;
var complemento = document.getElementById("Complemento").value;
var bairro = document.getElementById("Bairro").value;
var cidade = document.getElementById("Cidade").value;
var temp = document.getElementById("UF");
var uf = temp.options[temp.selectedIndex].value;
$.ajax(
{
type: "POST",
url: "/Master/CadastrarEndereco",
data: {
CodigoPessoa: codigoPessoa,
Cep: cep,
DescricaoEndereco: endereco,
Numero: numero,
Complemento: complemento,
Bairro: bairro,
Cidade: cidade,
UF: uf,
},
success: function (data) {
$("#endereco").html(data);
//limpaForm();
},
});
}
[HttpPost]
public PartialViewResult CadastrarEndereco(SuperViewModel enderecoVM) //action que salva o objeto obtido na view e enviado via ajax
{
if (string.IsNullOrEmpty(enderecoVM.Bairro))
ModelState.AddModelError("Bairro", "Bairro é obrigatório");
if (ModelState.IsValid)
{
var endereco = Extentions.MapearEndereco(enderecoVM);
EnderecoRepositorio.Cadastrar(endereco);
EnderecoRepositorio.Commit();
}
var dados = new SuperViewModel();//crio outro objeto para a view soh com as minhas dropdownlist e os dados da minha grid
dados.UFList = Extentions.ObterUF();
dados.Enderecos = EnderecoRepositorio.ObterEnderecoPorPessoa(enderecoVM.CodigoPessoa);
return PartialView("_EnderecoFields", dados);
}
If I return to Partialview without the object will break ! in the data object I have a dropdownlist clicking on the page and a enumerable for a grid that tbm use on the page!
– Hans Miller
may mount an SSCCE (http://sscce.org/) in the Dotnetfiddle (https://dotnetfiddle.net/)?
– Tobias Mesquita
Have you ever considered using Dataannotations to say that the field is required? So you don’t need to use that IF in his action.
– Randrade