Usuário com melhor resposta
Como faço para chamar duas model em uma view?

Pergunta
-
Eu tenho que chamar as model de Campo e a model de Categoria para carregar os atributos que estão no accordion
@model SistemaNovo.DataBase.Entities.Atendimento.AtendimentoEntity
@{
ViewBag.Title = "Cadastrar novo atendimento";
}
<hgroup class="title">
<h2>@ViewBag.Title</h2>
</hgroup>
<script type="text/javascript">
$(document).ready(function () {
$(function () {
$("#tabs").tabs();
});
});
</script>
@Scripts.Render("~/bundles/cadastro")
@Scripts.Render("~/syns/date.time")
@Styles.Render("~/Content/Sistema/custom")
<script src="@Url.Content("~/Scripts/jquery.globalize/cultures/globalize.culture.pt-BR.js")" type="text/javascript"></script>
<script src="~/Scripts/Maskara.js" type="text/javascript"></script>
@Html.Action("Index", "CategoriaPartial", new { Area = "SRC" })
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.AtendimentoId);
@Html.HiddenFor(model => model.UsuarioCadId)
@Html.HiddenFor(model => model.CategoriaId)
@Html.HiddenFor(model => model.AtendimentoMasterId)
<div id="tabs">
<ul>
<li><a href="#dadosBasicosDiv">Dados básicos</a></li>
</ul>
<div id="dadosBasicosDiv">
<fieldset>
<legend></legend>
<div>
<ol>
<li>
@Html.LabelFor(model => model.AtendimentoMasterId)
@Html.EditorFor(model => model.AtendimentoMasterId)
@Html.ValidationMessageFor(model => model.AtendimentoMasterId)
</li>
</ol>
</div>
<div>
<ol>
<li><span><b>Categoria</b></span>
<input type="text" id="CategoriaDescricao" />
<input type="button" id="CategoriaButton" value="Pesquisar" />
@Html.ValidationMessageFor(model => model.CategoriaId)
</li>
</ol>
</div>
@* <div id="accordion">
<h1>
<a href="#1">Section 1</a></h1>
<div>
<ol>
<li>
@Html.LabelFor(model => model.Nome)
@Html.EditorFor(model => model.Nome)
@Html.ValidationMessageFor(model => model.Nome)
</li>
</ol>
</div>
<div>
<ol>
<li>
@Html.LabelFor(model => model.Tipo)
@Html.EditorFor(model => model.Tipo)
@Html.ValidationMessageFor(model => model.Tipo)
</li>
</ol>
</div>
<div>
<ol>
<li>
@Html.LabelFor(model => model.Obrigatorio)
@Html.EditorFor(model => model.Obrigatorio)
@Html.ValidationMessageFor(model => model.Obrigatorio)
</li>
</ol>
</div>
<div>
<ol>
<li>
@Html.LabelFor(model => model.Valores)
@Html.EditorFor(model => model.Valores)
@Html.ValidationMessageFor(model => model.Valores)
</li>
</ol>
</div>
</div>
<div>
<ol>
<li>
@Html.LabelFor(model => model.AutorizacaoNumero)
@Html.EditorFor(model => model.AutorizacaoNumero)
@Html.ValidationMessageFor(model => model.AutorizacaoNumero)
</li>
</ol>
</div>
<div>
<ol>
<li>
@Html.LabelFor(model => model.Situacao)
@Html.EditorFor(model => model.Situacao)
@Html.ValidationMessageFor(model => model.Situacao)
</li>
</ol>
</div>
<div>
<ol>
<li>
@Html.LabelFor(model => model.Protocolo)
@Html.EditorFor(model => model.Protocolo)
@Html.ValidationMessageFor(model => model.Protocolo)
</li>
</ol>
</div>
<div>
<ol>
<li>
@Html.LabelFor(model => model.DataHoraProtocolo)
@Html.EditorFor(model => model.DataHoraProtocolo)
@Html.ValidationMessageFor(model => model.DataHoraProtocolo)
</li>
</ol>
</div>
<div>
<ol>
<li>
@Html.LabelFor(model => model.DataRetorno)
@Html.EditorFor(model => model.DataRetorno)
@Html.ValidationMessageFor(model => model.DataRetorno)
</li>
</ol>
</div>
<div>
<ol>
<li>
@Html.LabelFor(model => model.FormaRetorno)
@Html.EditorFor(model => model.FormaRetorno)
@Html.ValidationMessageFor(model => model.FormaRetorno)
</li>
</ol>
</div>
<div>
<ol>
<li>
@Html.LabelFor(model => model.DadosRetorno)
@Html.EditorFor(model => model.DadosRetorno)
@Html.ValidationMessageFor(model => model.DadosRetorno)
</li>
</ol>
</div>
<div>
<ol>
<li>
@Html.LabelFor(model => model.NumeroAdesao)
@Html.EditorFor(model => model.NumeroAdesao)
@Html.ValidationMessageFor(model => model.NumeroAdesao)
</li>
</ol>
</div>
<div>
<ol>
<li>
@Html.LabelFor(model => model.Cliente)
@Html.EditorFor(model=> model.Cliente)
@Html.ValidationMessageFor(model => model.Cliente)
</li>
</ol>
</div>*@
</fieldset>
</div>
</div>
<fieldset>
<legend></legend>
<input type="submit" value="Salvar" id="salvar" />
</fieldset>
@Html.ActionLink("Voltar para a pesquisa", "Index")
<script type="text/javascript">
$('#DataRetorno').addClass('datetimePicker');
$('#DataHoraProtocolo').addClass('datetimePicker');
$("#DataRetorno").mask("99/99/9999 00:00:00");
$("#DataHoraProtocolo").mask("99/99/9999 00:00:00");
</script>
<script type="text/javascript">
$("#accordion").accordion({
collapsible: true,
active: false
});
</script>
}
Respostas
-
Eduardo,
Um tempo atrás respondi um thread parecida (http://social.msdn.microsoft.com/Forums/pt-BR/d211f19e-690f-478c-ad0a-63493305ea31/utilizar-mais-de-uma-model-em-uma-nica-view-em-mvc4?forum=504) a solução que o Glenio sugeriu foi a mesma que eu sugeria, porem o Fúlvio também de outra solução usando de ViewBag e seria bom você dar uma olhada :)Vitor Mendes | http://www.vitormendes.com.br/
"Ajuda teu semelhante a levantar a sua carga, porém, não a carregá-la." (Pitágoras)
- Sugerido como Resposta Fulvio Cezar Canducci Dias quarta-feira, 23 de outubro de 2013 23:09
- Marcado como Resposta welington jrModerator segunda-feira, 5 de março de 2018 16:10
Todas as Respostas
-
Ola Eduardo,
vou tentar responder com as informações nas quais você disponibilizou.
Analisando a sua View, suponho que voce está acessando o Entity diretamente na sua View correto? Acessar diretamente o Entity funciona para casos mais simples. No seu caso, voce precisaria acessar diversos Entities.
A minha sugestão neste caso seria você criar uma ViewModel (CadastroAtendimentoViewModel?) com todas as informações necessarias para o seu Cadastro de Atendimento. A ViewModel poderia conter N Models, conforme o necessario.
Entao, você usaria apenas um Model na sua View. O seu Controller retornaria esta ViewModel com todas as informações para a sua View Cadastro de Atendimento. Neste caso, voce não acessaria mais a sua Entity diretamente, e sim a ViewModel.
Espero que isso ajude.- Sugerido como Resposta Glenio Alexandre Nogueira (gleniox) quinta-feira, 24 de outubro de 2013 20:14
-
-
-
Eduardo,
Um tempo atrás respondi um thread parecida (http://social.msdn.microsoft.com/Forums/pt-BR/d211f19e-690f-478c-ad0a-63493305ea31/utilizar-mais-de-uma-model-em-uma-nica-view-em-mvc4?forum=504) a solução que o Glenio sugeriu foi a mesma que eu sugeria, porem o Fúlvio também de outra solução usando de ViewBag e seria bom você dar uma olhada :)Vitor Mendes | http://www.vitormendes.com.br/
"Ajuda teu semelhante a levantar a sua carga, porém, não a carregá-la." (Pitágoras)
- Sugerido como Resposta Fulvio Cezar Canducci Dias quarta-feira, 23 de outubro de 2013 23:09
- Marcado como Resposta welington jrModerator segunda-feira, 5 de março de 2018 16:10
-
Eduardo,
Crie o FACADE e dê os Créditos ao nosso amigo Vitor Mendes!!!
Um tempo atrás respondi um thread parecida (http://social.msdn.microsoft.com/Forums/pt-BR/d211f19e-690f-478c-ad0a-63493305ea31/utilizar-mais-de-uma-model-em-uma-nica-view-em-mvc4?forum=504) a solução que o Glenio sugeriu foi a mesma que eu sugeria, porem o Fúlvio também de outra solução usando de ViewBag e seria bom você dar uma olhada :)
Vitor Mendes | http://www.vitormendes.com.br/
"Ajuda teu semelhante a levantar a sua carga, porém, não a carregá-la." (Pitágoras)
Fúlvio Cezar Canducci Dias -
Bom dia Eduardo,
Desculpe. Eu não tive a oportunidade de ver a sua mensagem antes. Mas o Vitor já deu o link como exemplo.
Eu prefiro a abordagem da criação da ViewModel. Mas há quem prefira a ViewBag. Neste link tem exemplos das 2 opções.
Boa sorte! E bom trabalho a todos! ;O)
- Editado Glenio Alexandre Nogueira (gleniox) quinta-feira, 24 de outubro de 2013 20:21
-