2 models em uma mesma View do .Net MVC
Tenho 2 tabelas, uma de pessoas e uma de contato.
Fiz uma view de create para incluir a pessoa, ao incluir a pessoa mando para a tela de editar passando o id.
No fim da pagina de editar , coloco um botão que vai adicionar os campos dos contatos, porem a pagina de editar não carrega dando erro, na chamada do Model da tabela de contato, sabem o que fiz de errado ou deixei de fazer no meu programa?
public partial class PESSOA { //[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] public PESSOA() { //this.PESSOAS_CONTATOS_CON = new HashSet<PESSOACONTATO>(); } public int IDE_PESSOA { get; set; } public string NOM_PESSOA { get; set; } public string SIG_FISICA_JURIDICA { get; set; } public string NUM_CNPJ { get; set; } public string NOM_FANTASIA { get; set; } public string NUM_CPF { get; set; } public string NUM_RG { get; set; } public Nullable<System.DateTime> DAT_NASCIMENTO { get; set; } public string LIS_ESTADO_CIVIL { get; set; } public string DES_PROFISSAO { get; set; } public string STS_PESSOA { get; set; } public Nullable<System.DateTime> DAT_INCLUSAO { get; set; } public string NOM_LOGIN_INCLUSAO { get; set; } public string NUM_IP_INCLUSAO { get; set; } public virtual IList<PESSOACONTATO> PESSOAS_CONTATOS_CON { get; set; } fiz o context e amarrei as tabelas. public class Context : DbContext { public Context():base("PadraoEntities") { Database.Log = instrucao => System.Diagnostics.Debug.WriteLine(instrucao); } public DbSet<PESSOACONTATO> PESSOACONTATO { get; set; } public DbSet<PESSOA> PESSOAS { get; set; } } }
Fiz uma view de create para incluir a pessoa, ao incluir a pessoa mando para a tela de editar passando o id.
No fim da pagina de editar , coloco um botão que vai adicionar os campos dos contatos, porem a pagina de editar não carrega dando erro, na chamada do Model da tabela de contato, sabem o que fiz de errado ou deixei de fazer no meu programa?
--> ele nao reconhece Model.PESSOAS_CONTATOS_CON. e model.PESSOAS_CONTATOS_CON ?
<div class="col-md-12" id="div-contatos"> @for (int i = 0; i < Model.PESSOAS_CONTATOS_CON.Count;i++) { <div class="row"> <div class="col-md-1"> @Html.HiddenFor(model => model.PESSOAS_CONTATOS_CON[0].IDE_CONTATO_PESSOA, new { @class = "hid-id" }) @*<input type="number" name="PESSOAS_CONTATOS_CON[0].NUM_DDD" maxlength="2" placeholder="DDD" class="form-control txt-ddd" />*@ @Html.EditorFor(model => model.PESSOAS_CONTATOS_CON[0].NUM_DDD, new { htmlAttributes = new { @class = "form-control txt-ddd" } }) </div> <div class="col-md-2"> @*<input type="text" name="PESSOAS_CONTATOS_CON[0].NUM_TELEFONE" placeholder="Número" class="form-control txt-numero" />*@ @Html.EditorFor(model => model.PESSOAS_CONTATOS_CON[0].NUM_TELEFONE, new { htmlAttributes = new { @class = "form-control txt-numero" } }) </div> <div class="col-md-1"> @Html.DropDownListFor( model => model.PESSOAS_CONTATOS_CON[0].LIS_TIPO_TELEFONE, (SelectList)ViewBag.ListaDeTiposDeTelefone, new { @class = "form-control sel-tipo" }) @*<select name="PESSOAS_CONTATOS_CON[0].LIS_TIPO_TELEFONE" class="form-control sel-tip o"> <option value="0">Residencial</option> <option value="1">Comercial</option> <option value="2">Celular</option> <option value="3">Recado</option> </select>*@ </div> <div class="col-md-2"> @*<input type="text" name="PESSOAS_CONTATOS_CON[0].DES_CONTATO" placeholder="Contato" class="form-control txt-contato" />*@ @Html.EditorFor(model => model.PESSOAS_CONTATOS_CON[0].DES_CONTATO, new { htmlAttributes = new { @class = "form-control txt-contato" } }) </div> <div class="col-md-2"> @*<input type="text" name="PESSOAS_CONTATOS_CON[0].DES_EMAIL_CONTATO" placeholder="Email" class="form-control txt-email" />*@ @Html.EditorFor(model => model.PESSOAS_CONTATOS_CON[0].DES_EMAIL_CONTATO, new { htmlAttributes = new { @class = "form-control txt-email" } }) </div> <div class="col-md-1"> @Html.DropDownListFor( model => model.PESSOAS_CONTATOS_CON[0].STS_CONTATO, (SelectList)ViewBag.ListaDeStatus, new { @class = "form-control sel-status " }) @*<select name="PESSOAS_CONTATOS_CON[0].STS_CONTATO" class="form-control sel-tipo"> <option value="A">ATIVO</option> <option value="I">INATIVO</option> </select>*@ </div> <div class="col-md-2"> <button class="btn btn-danger btn-remover-telefone" data-id="@Model.PESSOAS_CONTATOS_CON[0].IDE_PESSOA"> <span class="glyphicon glyphicon-trash"></span> </button> </div> </div> } </div> </div>
André Milani
Curtidas 0
Melhor post
Stella Oliveira
08/10/2019
Cara, usando HTML puro não é uma boa alternativa quando se usa MVC (C#) recomendo usar o cshtml (usa a sintaxe Razor)
ficaria tipo assim:
@using (Html.BeginForm("<Nome da Action>", "<Nome da Controller>", FormMethod.Post, new { enctype = "multipart/form-data }})) { <div> @Html.LabelFor(model => model.Endereco, htmlAttributes: new { @class = "control-label" }) @Html.EditFor(model => model.Endereco, new { htmlAttributes = new { @class = "form-control input" }}) <!-- E caso queira verificar se o campo foi preenchido acrescenta: @Html.ValidationMessageFor(model => model.Endereco, "", new { @class = "text-danger" }) --> </div> <div> @Html.LabelFor(model => model.EnderecoCobranca, "cobranca", htmlAttributes: new { @class = "control-label input" }) @{ var listTu = new List<SelectListItem> { new SelectListItem { Value = "S", Text = "Sim" }, new SelectListItem { Value = "N", Text = "Não" }, }; } @Html.DropDownListFor(model => model.EnderecoCobranca, new SelectList(listTu, "Value", "Text"), htmlAttributes: new { @class = "form-control input", data_bind = "value: EnderecoCobranca" }) <!-- @Html.ValidationMessageFor(model => model.EnderecoCobranca, "", new { @class = "text-danger" }) --> </div> }
GOSTEI 1
Mais Respostas
Stella Oliveira
26/09/2019
Talvez o mais ideal na sua situação seja passar os dados que precisa através do ViewData[""], por exemplo.
GOSTEI 0
André Milani
26/09/2019
RESOLVI ESSE PROBLEMA COM UM JAVASCRIPT FAZENDO UM BIND.
PORÉM ESTOU COM PROBLEMAS NA PASSAGEM DOS VALORES PARA INCLUSAO DOS DADOS.
Quando envio o valor de uma campo que é select ele passa o valor para ser gravado, porém quando o valor é do tipo text, ele não passa e não grava, saberia me dizer porque ?
' Tipo :<input type="text" name="PESSOAS_ENDERECOS_END[' + qtdEnderecos + ' ].DES_TIPO_ENDERECO" placeholder="Tipo" class="form-control txt-tipo" />' +
' Cobranca :<select name="PESSOAS_ENDERECOS_END[' + qtdEnderecos + '].STS_COBRANCA" placeholder="End.Cobranca" class="form-control sel-cobranca">' +
' <option value="S">SIM</option>' +
' <option value="N">NAO</option>' +
' </select>' +
PORÉM ESTOU COM PROBLEMAS NA PASSAGEM DOS VALORES PARA INCLUSAO DOS DADOS.
Quando envio o valor de uma campo que é select ele passa o valor para ser gravado, porém quando o valor é do tipo text, ele não passa e não grava, saberia me dizer porque ?
' Tipo :<input type="text" name="PESSOAS_ENDERECOS_END[' + qtdEnderecos + ' ].DES_TIPO_ENDERECO" placeholder="Tipo" class="form-control txt-tipo" />' +
' Cobranca :<select name="PESSOAS_ENDERECOS_END[' + qtdEnderecos + '].STS_COBRANCA" placeholder="End.Cobranca" class="form-control sel-cobranca">' +
' <option value="S">SIM</option>' +
' <option value="N">NAO</option>' +
' </select>' +
GOSTEI 0