Adicionar uma exibição (VB)
por Rick Anderson
Este tutorial ensinará os conceitos básicos da criação de um aplicativo Web ASP.NET MVC usando o Microsoft Visual Web Developer 2010 Express Service Pack 1, que é uma versão gratuita do Microsoft Visual Studio. Antes de começar, verifique se você instalou os pré-requisitos listados abaixo. Você pode instalar todos eles clicando no seguinte link: Web Platform Installer. Como alternativa, você pode instalar individualmente os pré-requisitos usando os seguintes links:
- Pré-requisitos do Visual Studio Web Developer Express SP1
- Atualização das ferramentas do ASP.NET MVC 3
- SQL Server Compact 4.0(runtime + suporte a ferramentas)
Se você estiver usando o Visual Studio 2010 em vez do Visual Web Developer 2010, instale os pré-requisitos clicando no seguinte link: Pré-requisitos do Visual Studio 2010.
Um projeto do Visual Web Developer com VB.NET código-fonte está disponível para acompanhar este tópico. Baixe a versão do VB.NET. Se preferir C#, alterne para a versão C# deste tutorial.
Nesta seção, modificaremos a HelloWorldController
classe para usar um arquivo de modelo de exibição para encapsular corretamente o processo de geração de respostas HTML para um cliente.
Vamos começar usando um modelo de exibição com o Index
método na HelloWorldController
classe . Atualmente, o Index
método retorna uma cadeia de caracteres com uma mensagem embutida em código dentro da classe do controlador. Altere o Index
método para retornar um View
objeto , conforme mostrado no seguinte:
Public Function Index() As ActionResult
Return View()
End Function
Agora vamos adicionar um modelo de exibição ao nosso projeto que podemos invocar com o Index
método . Para fazer isso, clique com o botão direito do mouse dentro do Index
método e clique em Adicionar Exibição.
A caixa de diálogo Adicionar Modo de Exibição é exibida. Deixe as entradas padrão e clique no botão Adicionar .
A pasta MvcMovie\Views\HelloWorld e o arquivo MvcMovie\Views\HelloWorld\Index.vbhtml são criados. Você pode vê-los em Gerenciador de Soluções:
Adicione algum HTML sob a <h2>
marca . O arquivo MvcMovie\Views\HelloWorld\Index.vbhtml modificado é mostrado abaixo.
@Code
ViewData("Title") = "Index"
End Code
<h2>Index</h2>
<b>Hello</b> World!
Execute o aplicativo e navegue até o controlador "olá, mundo" (http://localhost:xxxx/HelloWorld
). O Index
método no controlador não funcionou muito; ele simplesmente executou a instrução return View()
, que indicava que queríamos usar um arquivo de modelo de exibição para renderizar uma resposta ao cliente. Como não especificamos explicitamente o nome do arquivo de modelo de exibição a ser usado, ASP.NET MVC usa o arquivo de exibição Index.vbhtml na pasta \Views\HelloWorld . A imagem abaixo mostra a cadeia de caracteres embutida em código na exibição.
Parece muito bom. No entanto, observe que a barra de título do navegador diz "Índice" e o título grande na página diz "Meu Aplicativo MVC". Vamos mudar isso.
Alterando exibições e páginas de layout
Primeiro, vamos alterar o texto "Meu Aplicativo MVC". Esse texto é compartilhado e aparece em todas as páginas. Na verdade, ele aparece em apenas um lugar em nosso projeto, mesmo que esteja em todas as páginas do nosso aplicativo. Acesse a pasta /Views/Shared no Gerenciador de Soluções e abra o arquivo _Layout.vbhtml. Esse arquivo é chamado de página de layout e é o "shell" compartilhado que todas as outras páginas usam.
Observe a @RenderBody()
linha de código próxima à parte inferior do arquivo. RenderBody
é um espaço reservado em que todas as páginas que você cria são exibidas, "encapsuladas" na página de layout. Altere o <h1>
título de " Meu Aplicativo MVC" para "Aplicativo de Filme MVC".
<div id="title">
<h1>MVC Movie App</h1>
</div>
Execute o aplicativo e observe que ele agora diz "Aplicativo de Filme MVC". Clique no link Sobre e essa página também mostra "Aplicativo de Filme MVC".
O arquivo _Layout.vbhtml completo é mostrado abaixo:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>@ViewData("Title")</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
</head>
<body>
<div class="page">
<header>
<div id="title">
<h1>MVC Movie App</h1>
</div>
<div id="logindisplay">
@Html.Partial("_LogOnPartial")
</div>
<nav>
<ul id="menu">
<li>@Html.ActionLink("Home", "Index", "HelloWorld")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
</ul>
</nav>
</header>
<section id="main">
@RenderBody()
</section>
<footer>
</footer>
</div>
</body>
</html>
Agora, vamos alterar o título da página Índice (exibição).
@Code
ViewData("Title") = "Movie List"
End Code
<h2>My Movie List</h2>
<p>Hello from our View Template!</p>
Abra MvcMovie\Views\HelloWorld\Index.vbhtml. Há dois locais para fazer uma alteração: primeiro, o texto que aparece no título do navegador e, em seguida, no cabeçalho secundário (o <h2>
elemento). Vamos torná-los ligeiramente diferentes para que você possa ver qual bit de código muda qual parte do aplicativo.
Execute o aplicativo e navegue atéhttp://localhost:xx/HelloWorld
. Observe que o título do navegador, o cabeçalho primário e os títulos secundários foram alterados. É fácil fazer grandes alterações em seu aplicativo com pequenas alterações em uma exibição. (Se você não vir alterações no navegador, talvez esteja exibindo o conteúdo armazenado em cache. Pressione Ctrl+F5 no navegador para forçar a resposta do servidor a ser carregada.)
No entanto, nosso pouco de "dados" (neste caso, a mensagem "Olá, Mundo!") é embutido em código. Nosso aplicativo MVC tem V (exibições) e temos C (controladores), mas nenhum M (modelo) ainda. Em breve, veremos como criar um banco de dados e recuperar dados de modelo dele.
Passando dados do controlador para a exibição
Antes de irmos para um banco de dados e falarmos sobre modelos, vamos primeiro falar sobre como passar informações do Controlador para uma Exibição. Queremos passar o que um modelo de exibição requer para renderizar uma resposta HTML a um cliente. Esses objetos normalmente são criados e passados por uma classe de controlador para um modelo de exibição e devem conter apenas os dados exigidos pelo modelo de exibição — e não mais.
Anteriormente com a HelloWorldController
classe , o método de Welcome
ação levava um name
parâmetro e numTimes
e, em seguida, gerava os valores de parâmetro para o navegador. Em vez de o controlador continuar a renderizar essa resposta diretamente, vamos colocar esses dados em um recipiente para a Exibição. Controladores e exibições podem usar um ViewBag
objeto para armazenar esses dados. Isso será passado para um modelo de exibição automaticamente e usado para renderizar a resposta HTML usando o conteúdo do recipiente como dados. Dessa forma, o controlador se preocupa com uma coisa e com o modelo de exibição com outra, permitindo-nos manter limpo "separação de preocupações" dentro do aplicativo.
Como alternativa, poderíamos definir uma classe personalizada e, em seguida, criar uma instância desse objeto por conta própria, preenchê-la com dados e passá-la para a Exibição. Isso geralmente é chamado de ViewModel, porque é um modelo personalizado para o Modo de Exibição. No entanto, para pequenas quantidades de dados, o ViewBag funciona muito bem.
Retorne ao arquivo HelloWorldController.vb alterar o Welcome
método dentro do controlador para colocar Message e NumTimes no ViewBag. O ViewBag é um objeto dinâmico. Isso significa que você pode colocar o que quiser nele. O ViewBag não tem propriedades definidas até que você coloque algo dentro dela.
O completo HelloWorldController.vb
com a nova classe no mesmo arquivo.
Namespace MvcMovie
Public Class HelloWorldController
Inherits System.Web.Mvc.Controller
'
' GET: /HelloWorld
Function Index() As ActionResult
Return View()
End Function
Public Function Welcome(ByVal name As String, Optional ByVal numTimes As Integer = 1) As ActionResult
ViewBag.Message = "Hello " & name
ViewBag.NumTimes = numTimes
Return View()
End Function
End Class
End Namespace
Agora, nosso ViewBag contém dados que serão passados para o Modo de Exibição automaticamente. Novamente, como alternativa, poderíamos ter passado em nosso próprio objeto como este se gostarmos:
return View(myCustomObject)
Agora precisamos de um WelcomeView
modelo! Execute o aplicativo para que o novo código seja compilado. Feche o navegador, clique com o botão direito do mouse dentro do Welcome
método e clique em Adicionar Exibição.
Esta é a aparência da caixa de diálogo Adicionar Modo de Exibição .
Adicione o código a seguir sob o <h2>
elemento no novo Welcome.Arquivo vbhtml. Vamos fazer um loop e dizer "Olá" quantas vezes o usuário disser que deveríamos!
@Code
For i As Integer = 0 To ViewBag.NumTimes
@<h3> @ViewBag.Message @i.ToString </h3>
Next i
End Code
Execute o aplicativo e navegue até http://localhost:xx/HelloWorld/Welcome?name=Scott&numtimes=4
Agora, os dados são retirados da URL e passados automaticamente para o controlador. O controlador empacota os dados em um Model
objeto e passa esse objeto para a exibição. A exibição que exibe os dados como HTML para o usuário.
Bem, isso foi um tipo de “M” de modelo, mas não o tipo de banco de dados. Vamos ver o que aprendemos e criar um banco de dados de filmes.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de