Duas models em uma View

26/09/2013

0

Galera, sou nova por aqui. Estou com um probleminha em uma aplicação que estou fazendo, tenho duas tabelas no banco de dados, x e y, terei dois models, um pra classe x e outro pra classe y, porém eu preciso juntar os dados desas duas tabelas em uma única view, o Partial View não dá pra ser usado porque eu preciso de fazer tudo isso para um CRUD. Gostaria de uma ajuda de vocês!
Leilyanne Souza

Leilyanne Souza

Responder

Post mais votado

26/09/2013

Nesse caso seria interessante utilizar um ViewModel. Veja este post do Eduardo Pires onde ele explica essa questão: [url]http://eduardopires.net.br/2013/08/asp-net-mvc-view-model-pattern-quando-e-como-utilizar/[/url].
Boa sorte.

Joel Rodrigues

Joel Rodrigues
Responder

Mais Posts

26/09/2013

Leilyanne Souza

Eu tentei fazer por esse exemplo já, porém quando eu passo a lista pra view eu não consigo visualizar os atributos.

P.S. ainda estou engatinhando no asp.
Responder

26/09/2013

Joel Rodrigues

Coloque aqui o código da sua view e da chamada (Action).
Responder

26/09/2013

Leilyanne Souza

Action:

public ActionResult Create()
{

IList<Licenca> ilLicenca = new List<Licenca>();

var model = new Software
{
Licencas = ilLicenca
};

return View(model);
}

View:

@model SisGAT.Models.Software



@ViewBag.Licenca

@{
ViewBag.Title = "Create";
}
<br />
<h3>
<span style="padding-left:50px">Novo registro</span>
</h3>
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)

<fieldset>
<legend>Software</legend>

<div class="editor-label">
<span style="padding-left:40px">@Html.LabelFor(model => model.nomSoftware)</span>
</div>
<div class="editor-field">
<span style="padding-left:40px">@Html.EditorFor(model => model.nomSoftware)</span>
@Html.ValidationMessageFor(model => model.nomSoftware)
</div>

<div class="editor-label">
<span style="padding-left:40px">@Html.LabelFor(model => model.nomFabricante)</span>
</div>
<div class="editor-field">
<span style="padding-left:40px">@Html.EditorFor(model => model.nomFabricante)</span>
@Html.ValidationMessageFor(model => model.nomFabricante)
</div>

<br />

<div class="form" >
<form action="/" id="thing-alerts">
<span style="padding-left:40px"><label for="tipSoftware">Tipo de software</label></span>
<select name="tipSoftware">
<option value="pago">Pago</option>
<option value="livre">Livre</option>
</select>
</form>
</div>

<div class="editor-field">

<span style="padding-left:40px">@Html.ValidationMessageFor(model => model.tipSoftware)</span>
</div>

<div class="editor-label">
<span style="padding-left:40px">@Html.LabelFor(model => model.valor)</span>
</div>
<div class="editor-field">
<span style="padding-left:40px">@Html.EditorFor(model => model.valor)</span>
@Html.ValidationMessageFor(model => model.valor)
</div>

<div class="editor-label">
<span style="padding-left:40px"> @Html.LabelFor(model => model.data)</span>
</div>
<div class="editor-field">
<span style="padding-left:40px">@Html.EditorFor(model => model.data)</span>
@Html.ValidationMessageFor(model => model.data)
</div>

<div class="editor-label">
<span style="padding-left:40px">@Html.LabelFor(model => model.numUsu)</span>
</div>
<div class="editor-field">
<span style="padding-left:40px">@Html.EditorFor(model => model.numUsu)</span>
@Html.ValidationMessageFor(model => model.numUsu)
</div>

@foreach (var u in Model.Licencas)
{



}
<br />



<p>
<span style="padding-left:40px"><input type="submit" value="Adicionar" /></span>
</p>
</fieldset>
}

Responder

26/09/2013

Joel Rodrigues

No caso, você não está conseguindo acessar a propriedade Licencas, é isso?
Responder

26/09/2013

Leilyanne Souza

Isso, eu não consigo fazer um EditorFor nem um LaberFor pq ele não encontra as propriedades.
Responder

26/09/2013

Joel Rodrigues

Experimente o seguinte:
1) Salvar tudo, dar um build no projeto e tentar novamente.
2) Ao invés de usar var, utilize Licenca no for.
Responder

26/09/2013

Leilyanne Souza

Consegui aqui, fiz assim:

@foreach ( SisGAT.Models.Licenca u in Model.Licencas)

Agora eu preciso saber como usar o editorFor e laberFor com essas propriedades?
Responder

26/09/2013

Leilyanne Souza

P.S. Como eu faria esse for?
Responder

26/09/2013

Joel Rodrigues

Você quer permitir que o usuário selecione várias licenças para o registro atual?
Responder

26/09/2013

Leilyanne Souza

Para cada objeto de software o usuário vai selecionar uma licença.
Responder

26/09/2013

Joel Rodrigues

Para cada objeto de software o usuário vai selecionar uma licença.
É apenas uma, ou são várias?
Se for só uma, por que Software tem uma lista de Licenca? E se for só uma, use o DropDownFor.
Responder

26/09/2013

Rodrigo Odasaki

Leilyanne Souza, eu prefiro que você diga, "asp.net" ou ".net".
Agora só asp, muda tudo.
heheeh
Responder

27/09/2013

Leilyanne Souza

Leilyanne Souza, eu prefiro que você diga, "asp.net" ou ".net".
Agora só asp, muda tudo.
heheeh


Vc está certo, usarei isso da próxima vez!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar