Laboratório 1 - Filipo Novo Mór

Transcrição

Laboratório 1 - Filipo Novo Mór
S2B – ASP.NET MVC
1
Laboratório 4 – Views
Neste laboratório é apresentado a construção de Views, o uso de Html Helpers e atributos de
apresentação e validação do modelo.
1
Analisando o processo de Scaffolding
1.1 No Visual Studio, abra a sua solução do laboratório 03 ou descompacte e abra a solução
disponibilizada na página de materiais do curso).
1.2 Adicione ao projeto um novo controlador de nome GenreController. Para este
controlador, utilize o template MVC 5 Controller – Empty.
1.3 Adicione ao controlador um atributo para acesso ao repositório (será necessário fazer
referência ao namespace):
private MovieDBContext movieDb = new MovieDBContext();
1.4 Altere o método de ação Index para passar à View a lista de gêneros no banco de dados,
em ordem alfabética:
public ActionResult Index()
{
var genres = movieDb.Genres.OrderBy(g => g.Name);
return View( genres.ToList() );
}
1.5 Adicione uma view para a edição utilizando o MVC Scaffold e utilize o template Empty
(without model). Altere as marcações de título (no início do arquivo) para referenciar o
modelo recebido (a lista de gêneros retornada pela consulta):
@model IEnumerable<MvcMovie.Models.Genre>
@{
ViewBag.Title = "Movie App - Genres";
}
<h2>Genres</h2>
1.6 Adicione uma tabela com a lista de gêneros disponíveis, vamos fazer com que ao
selecionar um gênero seja apresentada uma lista com os filmes daquele gênero.
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.Description)
</th>
<th></th>
</tr>
S2B – ASP.NET MVC
2
@foreach (var item in Model) {
<tr>
<td>
@Html.ActionLink(item.Name, "Browse", "Movie", new { genre =
item.Name }, null)
</td>
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
</tr>
}
</table>
1.7 Adicione ao controlador MovieController um método de ação (e uma view associada)
para mostrar os filmes do gênero recebido a partir do link criado no passo anterior. Faça
com que ao clicar em um filme sejam mostrados os detalhes deste filme.
1.8 Execute e teste.
2
Adicionando um HTML Helper
2.1 Eventualmente alguns nomes de campos podem ser longos e gerar apresentações
indesejadas com a quebra destes nomes em duas ou mais linhas. Crie um método de
extensão para definir um tamanho máximo para apresentação destes campos. Abra a
view Index do controlador GenreController criada e acrescente o código abaixo logo
após a diretiva @model:
@helper Truncate(string input, int length)
{
if (input.Length <= length) {
@input
} else {
@input.Substring(0, length)<text>...</text>
}
}
2.2 A seguir, altere a apresentação das propriedades descrição para fazer uso do método
definido:
<td>
@Truncate(item.Description, 80)
</td>
2.3 Execute e teste.
3
Exercícios
3.1 Retome o final do laboratório 03 e acrescente ao controlador/view um mecanismo que
permita filtrar os filmes a partir do seu gênero. O gênero deve ser selecionado pelo
usuário a partir de um componente do tipo DropDownList.