Usuário com melhor resposta
Pegar dados de outra model e colocar no Create

Pergunta
-
Olá gente boa tarde, estou quebrando a cabeça com asp.net MVC sou iniciante no assunto e gostaria da ajuda de vocês por gentileza seguinte:
fiz um projeto onde na parte de cadastro de instrutores de voo digito o codigo anac dele e clico em consultar se existir no modelo cadastrogeral ele pega a informação do nome e manda para o modelo cadinstrutor e ai eu completo com as outras informações porém não entendo muito como isso funciona vou adicionar as telas aqui para vocês ter uma ideia de como está:
// aqui está a parte da view do CREATE @using (Html.BeginForm("Create", "CadInstrutor", FormMethod.Post, new { ID = "FrmCadGeral" })) { @Html.AntiForgeryToken() @Html.ValidationSummary(true) <center> <div id="accordion_cadgeral" style="width:750px;"> <h3>Cadastro de Instrutor de Voo</h3> <div> <br /><br /> <div class="form-horizontal"> @Html.ValidationSummary(true) <div class="form-group"> <label class="control-label col-sm-2">CódAnac</label> <div class="col-sm-2"> @Html.TextBoxFor(model => model.CodAnac, new { @class = "form-control Canac" }) @Html.ValidationMessageFor(model => model.CodAnac) </div> <div class="col-lg-1"> <input type="submit" value="Consultar" formnovalidate="formnovalidate" rel="tooltip" title="Consultar Anac" name="Command" style="margin-right:15px;" class="btn btn-warning glyphicon glyphicon-search"/> </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Nome, new { @class = "control-label col-sm-2" }) <div class="col-sm-5"> @Html.TextBoxFor(model => model.Nome, new { @id="Nome", @class = "form-control" }) @Html.ValidationMessageFor(model => model.Nome) </div> </div> <div class="form-group"> <label class="control-label col-sm-2">Nome de Pista</label> <div class="col-sm-5"> @Html.TextBoxFor(model => model.Apelido, new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.Apelido) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Peso, new { @class = "control-label col-sm-2" }) <div class="col-sm-2"> @Html.TextBoxFor(model => model.Peso, new { @class = "form-control", style = "width:100px;" }) @Html.ValidationMessageFor(model => model.Peso) </div> <div class="col-sm-3"> <label>*** Digite o Peso em Kg.</label> </div> </div> <h4><<<<<< Validades >>>>></h4> <div class="form-group"> <label class="control-label col-sm-2">Cma Até:</label> <div class="col-sm-2"> @Html.TextBoxFor(model => model.ValidadeCma, new { @class = "form-control datepicker date" }) @Html.ValidationMessageFor(model => model.ValidadeCma) </div> @Html.LabelFor(model => model.ClasseCma, new { @class = "control-label col-sm-2" }) <div class="col-sm-2" style="width:165px;"> <select id="ClasseCma" class="form-control" name="ClasseCma"> <option value="1">1(a)</option> <option value="2">2(a)</option> </select> @Html.ValidationMessageFor(model => model.ClasseCma) </div> </div> <div class="form-group"> <label class="control-label col-sm-2">CHT Até:</label> <div class="col-sm-2"> @Html.TextBoxFor(model => model.VecimentoCht, new { @class = "form-control datepicker date" }) @Html.ValidationMessageFor(model => model.VecimentoCht) </div> <label class="control-label col-sm-2">INVA Até:</label> <div class="col-sm-2"> @Html.TextBoxFor(model => model.VencimentoHabilitaInva, new { @class = "form-control datepicker date" }) @Html.ValidationMessageFor(model => model.VencimentoHabilitaInva) </div> </div> <br /><br /> </div> </div> </div> </center> <br /><br /> <div class="form-horizontal"> <div class="form-group"> <div style="margin-left:530px;"> <input type="submit" value="Salvar" formnovalidate="formnovalidate" rel="tooltip" title="Cadastrar Registro" name="Command" style="margin-right:15px;" class="btn btn-success" /> <a href='@Url.Action("Index", "CadInstrutor", null)'><img src="~/Content/Icones/home128x128.png" rel="tooltip" border="0" title="Voltar" width="32px" height="32px" /></a> </div> </div> </div> } @section Scripts { @Scripts.Render("~/bundles/jqueryval") <script src="~/Scripts/myscript/frmCadGeral.js"></script> <script src="~/Scripts/myscript/vldExtra.js"></script> }
//aqui a do controller // POST: /CadInstrutor/Create // To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "ID,CodAnac,Nome,Apelido,Peso,ValidadeCma,ClasseCma,VecimentoCht,VencimentoHabilitaInva")] CadInstrutor cadinstrutor, Cadastrogeral cadgeral, FormCollection form, string Command) { if(Command == "Consultar") { string vl = Request.Form["CodAnac"]; var cadInstrores = from i in db.CadInstrutors select i; } if (Command == "Salvar") { if (ModelState.IsValid) { db.CadInstrutors.Add(cadinstrutor); db.SaveChanges(); return RedirectToAction("Index"); } } return View(cadinstrutor); } // GET: /CadInstrutor/Edit/5 public ActionResult Edit(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } CadInstrutor cadinstrutor = db.CadInstrutors.Find(id); if (cadinstrutor == null) { return HttpNotFound(); } return View(cadinstrutor); }
//aqui esta o modelo principal onde eu quero pegar so a informação de nome daqui. using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Data.Entity; namespace flightdata.Models { public class Cadastrogeral { /* Aqui vai funcionar toda a parte de cadastro do sistema tanto para alunos quanto para invas e adminstradores. onde vai possibilitar dar acesso ao usuário. */ //--> Parte de Dados Pessoais. public int ID { get; set; } [Display(Name = "CódAnac")] public int? CodAnac { get; set; } public string Nome { get; set; } [Display(Name="D.Nascimento")] [DataType(DataType.Date)] [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] public DateTime? DataNasc { get; set; } public string Sexo { get; set; } public string Nacionalidade { get; set; } public string Naturalidade { get; set; } [Display(Name = "Estado Civil")] public string Estadocivil { get; set; } [Display(Name = "Nome do Pai")] public string Nomedopai { get; set; } [Display(Name = "N. da Mãe")] public string Nomedamae { get; set; } //--> Parte de Contatos Pessoais. public string Email { get; set; } [Display(Name = "F.Residencial")] public string FoneRes { get; set; } [Display(Name = "F.Comercial")] public string FoneCom { get; set; } [Display(Name = "F.Celular")] public string FoneCel { get; set; } //--> Parte de Documentação. public string Rg { get; set; } public string OrgEmissor { get; set; } public string Cpf { get; set; } [Display(Name = "Título de Eleitor")] public string TitEleitor { get; set; } public string Reservista { get; set; } public string Escolaridade { get; set; } //-> Parte da Saúde. [Display(Name = "Tipo Sanguineo")] public string TipoSanguineo { get; set; } public string Alergias { get; set; } //--> Parte de Endereços public string Cep { get; set; } [Display(Name = "Endereço")] public string Endereco { get; set; } [Display(Name = "Numero")] public string NrEndereco { get; set; } public string Complemento { get; set; } public string Cidade { get; set; } public string Bairro { get; set; } public string Uf { get; set; } public string OBS { get; set; } [Display(Name = "D.Inscrição")] [DataType(DataType.Date)] [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] public DateTime? DataInsc { get; set; } [Display(Name = "Perteçe ao Grupo")] public string GrupoPertencente { get; set; } public virtual ICollection<Cadastrogeral> CadGeral { get; set; } } }
//Aqui a parte do cadastro de instrutor. using System; using System.ComponentModel.DataAnnotations; using System.Data.Entity; namespace flightdata.Models { public class CadInstrutor { public int ID { get; set; } public int? CodAnac { get; set; } public string Nome { get; set; } public string Apelido { get; set; } public string Peso { get; set; } [DataType(DataType.Date)] [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] public DateTime? ValidadeCma { get; set; } public int? ClasseCma { get; set; } //parte de vencimentos [DataType(DataType.Date)] [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] public DateTime? VecimentoCht { get; set; } [DataType(DataType.Date)] [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] public DateTime? VencimentoHabilitaInva { get; set; } } }
obrigado pela ajuda.
Respostas
-
Consegui resolver da seguinte forma:
[HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "ID,CodAnac,Nome,Apelido,Peso,ValidadeCma,ClasseCma,VecimentoCht,VencimentoHabilitaInva")] CadInstrutor cadinstrutor, FormCollection form, string Command) { if(Command == "Consultar") { string CAnac = Request.Form["CodAnac"]; var CadastroGeral = db.Cadastrogerals.SqlQuery("select * from dbo.Cadastrogerals where CodAnac = " + Convert.ToInt32(CAnac)).ToList(); if(CadastroGeral.Count != 0) { ModelState.Clear(); string nome = CadastroGeral[0].Nome; cadinstrutor.Nome = nome; } } if (Command == "Salvar") { if (ModelState.IsValid) { db.CadInstrutors.Add(cadinstrutor); db.SaveChanges(); return RedirectToAction("Index"); } } return View(cadinstrutor); }
não sei se é a forma correta mais o problema foi solucionado está conseguindo pegar o campo nome e jogar no formulário. seria esta a forma mais correta ?
- Marcado como Resposta Victor Dekolá terça-feira, 4 de março de 2014 20:07