Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
(inclui Atualização de Ferramentas de abril de 2011)
ASP.NET MVC 3 é uma framework para construir aplicações web escaláveis e baseadas em standards, utilizando padrões de design bem estabelecidos e o poder do ASP.NET e do .NET Framework.
Instala-se lado a lado com ASP.NET MVC 2, por isso comece a usá-lo hoje mesmo!
Descarregue o instalador aqui
Principais Características
- Sistema integrado de andaimes extensível via NuGet
- Modelos de projeto habilitados por HTML 5
- Vistas Expressivas incluindo o novo Razor View Engine
- Ganchos Poderosos com Injeção de Dependências e Filtros de Ação Global
- Suporte rico para JavaScript com JavaScript discreto, jQuery Validation e JSON binding
- Leia a lista completa de funcionalidades abaixo
Principais Ligações
Novidades no ASP.NET MVC 3
- Phil Haack: ASP.NET MVC 3 lançado
- Scott Hanselman: ASP.NET MVC3, WebMatrix, NuGet, IIS Express e Orchard lançados - O Lançamento Web de Janeiro da Microsoft em Contexto
- Scott Guthrie: Anúncio do lançamento do ASP.NET MVC 3, IIS Express, SQL CE 4, Web Farm Framework, Orchard, WebMatrix
- Notas de lançamento para ASP.NET MVC 3
Instalação e Ajuda
- Instale ASP.NET MVC 3 usando o Web Platform Installer (recomendado)
- Instale o ASP.NET MVC 3 usando o instalador executável
- Instalar ASP.NET MVC 3 para Visual Studio 11 Developer Preview
- Lê o tutorial de Introdução ASP.NET MVC 3
- Peça ajuda e discuta ASP.NET MVC 3 nos fóruns
ASP.NET Visão Geral do MVC 3
ASP.NET MVC 3 baseia-se em ASP.NET MVC 1 e 2, adicionando excelentes funcionalidades que simplificam o seu código e permitem uma extensibilidade mais profunda. Este tópico apresenta uma visão geral de muitas das novas funcionalidades incluídas nesta versão, organizadas nas seguintes secções:
- Andaimes extensíveis com integração do Andaime Mvc
- Modelos de projeto habilitados por HTML 5
- O View Engine Razor
- Suporte para Múltiplos Motores de Visualização
- Melhorias no Controlador
- JavaScript e Ajax
- Melhorias na Validação do Modelo
- Melhorias na Injeção de Dependências
- Outras Novas Funcionalidades
Estruturação Extensível com integração do MvcScaffold
O novo sistema Scaffolding facilita a aprendizagem e o início da utilização produtiva se for totalmente novo no framework, e a automatização de tarefas comuns de desenvolvimento se tiver experiência e já souber o que está a fazer.
Isto é suportado pelo novo pacote de scaffolding NuGet chamado MvcScaffolding. O termo "andaime" é usado por muitas tecnologias de software para significar "gerar rapidamente um esboço básico do seu software que pode depois editar e personalizar". O pacote de andaimes que estamos a criar para ASP.NET MVC é muito benéfico em vários cenários:
- Se estás a aprender ASP.NET MVC pela primeira vez, porque isso dá-te uma forma rápida de obter código útil e funcional, que depois podes editar e adaptar conforme as tuas necessidades. Poupa-te do trauma de olhar para uma página em branco sem saber por onde começar!
- Se conhece bem ASP.NET MVC e está agora a explorar novas tecnologias adicionais , como um mapeador objeto-relacional, um motor de visualização, uma biblioteca de testes, etc., porque o criador dessa tecnologia pode também ter criado um pacote de andaimes para ela.
- Se o teu trabalho envolve criar repetidamente classes ou ficheiros semelhantes de algum tipo, porque podes criar andaimes personalizados que geram fixtures de teste, scripts de deployment ou o que mais precisares. Todos na tua equipa também podem usar os teus andaimadores personalizados.
Outras funcionalidades no MvcScaffolding incluem:
- Suporte para projetos em C# e VB
- Suporte para os motores de visualização Razor e ASPX
- Suporta scaffolding em áreas do ASP.NET MVC e a utilização de layouts/mestres de vistas personalizadas
- Pode facilmente personalizar a saída editando templates T4
- Podes adicionar esquemas totalmente novos usando lógica PowerShell personalizada e templates T4 personalizados. Estes (e quaisquer parâmetros personalizados que lhes tenha dado) aparecem automaticamente na lista de completamento de separadores da consola.
- Podes obter pacotes NuGet que contenham andaimadores adicionais para diferentes tecnologias (por exemplo, há agora um modelo de prova de conceito para LINQ para SQL) e combiná-los
A ASP.NET Atualização de Ferramentas MVC 3 inclui excelente suporte Visual Studio para este sistema de andaimes, tais como:
- Adicionar Diálogos de Controlador suporta agora uma estrutura automática completa de ações de Controladores de Criar, Ler, Atualizar e Eliminar e as respetivas vistas. Por padrão, esta estrutura de código de acesso aos dados utiliza o EF Code First.
- Add Controller Dialog suporta andaimes extensíveis através de pacotes NuGet como o MvcScaffolding. Isto permite inserir andaimes personalizados no diálogo, o que lhe permitiria criar andaimes para outras tecnologias de acesso a dados, como NHibernate ou até JET com ODBCDirect, se assim o desejar!
Para mais informações sobre andaimes no ASP.NET MVC 3, consulte os seguintes recursos:
A série de publicações de Steve Sanderson, incluindo:
Post de Scott Hanselman da sessão PDC 2010 Construir um Blog com o "Pacote Sem Nome de Amor Web" da Microsoft
Modelos de Projeto HTML 5
O diálogo Novo Projeto inclui uma caixa de seleção para ativar versões HTML 5 dos modelos de projeto. Estes modelos aproveitam o Modernizr 1.7 para fornecer suporte de compatibilidade para HTML 5 e CSS 3 em navegadores de nível inferior.
O Motor de Renderização Razor View
ASP.NET MVC 3 vem com um novo motor de visualização chamado Razor, que oferece os seguintes benefícios:
- A sintaxe do Razor é limpa e concisa, exigindo um número mínimo de pressionamentos de teclas.
- O Razor é fácil de aprender, em parte porque se baseia em linguagens existentes como C# e Visual Basic.
- O Visual Studio inclui IntelliSense e coloração de código para a sintaxe do Razor.
- As vistas Razor podem ser testadas por unidade sem necessidade de executar a aplicação ou iniciar um servidor web.
Algumas novas funcionalidades do Razor incluem as seguintes:
-
@modelsintaxe para especificar o tipo a ser passado para a visualização. -
@* *@Sintaxe dos comentários. - A capacidade de especificar os valores definidos (como
layoutpage) uma vez para todo um site. - O
Html.Rawmétodo para mostrar texto sem o codificar em HTML. - Suporte para partilha de código entre múltiplas vistas (ficheiros _viewstart.cshtml ou _viewstart.vbhtml ).
O Razor inclui também novos auxiliares em HTML, tais como os seguintes:
-
Chart. Renderiza um gráfico, oferecendo as mesmas funcionalidades do controlo gráfico em ASP.NET 4. -
WebGrid. Renderiza uma grelha de dados, completa com funcionalidade de paginação e ordenação. -
Crypto. Utiliza algoritmos de hash para criar palavras-passe devidamente salgadas e hashadas. -
WebImage. Renderiza uma imagem. -
WebMail. Envia uma mensagem de e-mail.
Para mais informações sobre Razor, consulte os seguintes recursos:
- Publicação no blogue de Scott Guthrie a apresentar o Razor
- Scott Guthrie's blog post introducing the @model keyword
- Postagem no blogue de Scott Guthrie sobre layouts Razor
- Referência Rápida da API Razor
- Notas de Lançamento do MVC 3
Suporte para Múltiplos Motores de Visualização
A caixa de diálogo Adicionar Vista no ASP.NET MVC 3 permite-lhe escolher o motor de visualização com que quer trabalhar, e a caixa de diálogo Novo Projeto permite-lhe especificar o motor de visualização predefinido para um projeto. Pode escolher o motor de visualização Web Forms (ASPX), Razor ou um motor de visualização open-source como Spark, NHaml ou NDjango.
Melhorias no Comando
Filtros de Ação Global
Por vezes, queres executar lógica antes de um método de ação ser executado ou depois de um método de ação ser executado. Para suportar isto, ASP.NET MVC 2 fornecia filtros de ação. Os filtros de ação são atributos personalizados que fornecem um meio declarativo para adicionar comportamento pré-ação e pós-ação a métodos específicos de ação do controlador. No entanto, em alguns casos pode querer especificar um comportamento pré-ação ou pós-ação que se aplique a todos os métodos de ação. O MVC 3 permite especificar filtros globais adicionando-os à GlobalFilters coleção. Para mais informações sobre filtros de ação global, consulte os seguintes recursos:
Nova propriedade "ViewBag"
Os controladores MVC 2 suportam uma ViewData propriedade que permite passar dados para um modelo de vista usando uma API de dicionário com binding tardio. No MVC 3, também pode usar uma sintaxe um pouco mais simples com a ViewBag propriedade para alcançar o mesmo propósito. Por exemplo, em vez de escrever ViewData["Message"]="text", pode escrever ViewBag.Message="text". Não precisa de definir classes fortemente tipadas para usar a propriedade ViewBag. Como é uma propriedade dinâmica, pode-se simplesmente obter ou definir propriedades e isso resolve-as dinamicamente em tempo de execução. Internamente, ViewBag as propriedades são armazenadas como pares nome/valor no ViewData dicionário. (Nota: na maioria das versões pré-lançamento de MVC 3, a ViewBag propriedade era chamada de propriedade ViewModel .)
Novos Tipos «ActionResult»
Os seguintes ActionResult tipos e métodos auxiliares correspondentes são novos ou melhorados no MVC 3:
- HttpNotFoundResult. Devolve um código de estado HTTP 404 ao cliente.
-
RedirecionaResultado. Devolve um redirecionamento temporário (código de estado HTTP 302) ou um redirecionamento permanente (código de estado HTTP 301), dependendo de um parâmetro Booleano. Em conjunto com esta alteração, a classe Controller tem agora três métodos para realizar redirecionamentos permanentes:
RedirectPermanent,RedirectToRoutePermanent, eRedirectToActionPermanent. Estes métodos retornam uma instância deRedirectResultcom aPermanentpropriedade definida comotrue. - HttpStatusCodeResult. Devolve um código de estado HTTP especificado pelo utilizador.
Melhorias em JavaScript e Ajax
Por defeito, o Ajax e os auxiliares de validação no MVC 3 utilizam uma abordagem JavaScript discreta. O JavaScript discreto evita injetar JavaScript embutido no HTML. Isto torna o seu HTML mais pequeno e menos desarrumado, e facilita a troca ou personalização de bibliotecas JavaScript. Os auxiliares de validação no MVC 3 também usam o plugin jQueryValidate por padrão. Se quiser o comportamento do MVC 2, pode desativar o JavaScript discreto usando uma definição no ficheiro web.config. Para mais informações sobre melhorias em JavaScript e Ajax, consulte os seguintes recursos:
- Introdução básica ao JavaScript discreto no site da Wikipédia
- Publicação discreta de Brad Wilson sobre JavaScript
- Post discreto de Brad Wilson sobre validação em JavaScript
- Criar uma Aplicação MVC 3 com Razor e JavaScript Discreto (tutorial no site ASP.NET)
- Notas de Lançamento do MVC 3
Validação no Lado do Cliente Ativada por Padrão
Nas versões anteriores do MVC, é necessário chamar explicitamente o Html.EnableClientValidation método a partir de uma vista para permitir a validação do lado do cliente. No MVC 3, isto já não é necessário porque a validação do lado do cliente está ativada por defeito. (Pode desativar isto usando uma definição no ficheiroweb.config .)
Para que a validação do lado do cliente funcione, ainda precisa de referenciar as bibliotecas apropriadas de jQuery e jQuery Validation no seu site. Pode alojar essas bibliotecas no seu próprio servidor ou referi-las a partir de uma rede de distribuição de conteúdos (CDN), como as CDNs da Microsoft ou Google.
Validador Remoto
ASP.NET MVC 3 suporta a nova classe RemoteAttribute , que lhe permite tirar partido do suporte ao validador remoto do plug-in jQuery Validation. Isto permite que a biblioteca de validação do lado do cliente chame automaticamente um método personalizado que define no servidor para executar uma lógica de validação que só pode ser feita do lado do servidor.
No exemplo seguinte, o Remote atributo especifica que a validação do cliente irá chamar uma ação nomeada UserNameAvailable na UsersController classe para validar o UserName campo.
public class User
{
[Remote("UserNameAvailable", "Users")]
public string UserName { get; set; }
}
O exemplo seguinte mostra o controlador correspondente.
public class UsersController
{
public bool UserNameAvailable(string username)
{
if(MyRepository.UserNameExists(username))
{
return "false";
}
return "true";
}
}
Para mais informações sobre como usar o Remote atributo, veja Como: Implementar Validação Remota em ASP.NET MVC na biblioteca MSDN.
Suporte de Vinculação JSON
ASP.NET MVC 3 inclui suporte incorporado para ligação JSON que permite aos métodos de ação receber dados codificados em JSON e associá-los a parâmetros do método de ação. Esta funcionalidade é útil em cenários envolvendo modelos de clientes e ligação de dados. (Os templates de cliente permitem-lhe formatar e mostrar um único elemento de dados ou conjunto de itens de dados usando templates que se executam no cliente.) O MVC 3 permite-lhe ligar facilmente modelos de cliente a métodos de ação no servidor que enviam e recebem dados JSON. Para mais informações sobre suporte a binding JSON, consulte a secção de Melhorias em JavaScript e AJAX do artigo de blog MVC 3 Preview de Scott Guthrie.
Melhorias na Validação do Modelo
Atributos de Metadados "DataAnnotations"
ASP.NET MVC 3 suporta DataAnnotations metadados como DisplayAttribute.
Classe "ValidationAttribute"
A ValidationAttribute classe foi melhorada no .NET Framework 4 para suportar uma nova IsValid sobrecarga que fornece mais informações sobre o contexto atual de validação, como que objeto está a ser validado. Isto permite cenários mais ricos onde pode validar o valor atual com base noutra propriedade do modelo. Por exemplo, o novo CompareAttribute atributo permite-lhe comparar os valores de duas propriedades de um modelo. No exemplo seguinte, a ComparePassword propriedade deve corresponder ao Password campo para ser válida.
public class User
{
[Required]
public string Password { get; set; }
[Required, Compare("Password")]
public string ComparePassword { get; set; }
}
Interfaces de Validação
A interface IValidatableObject permite-lhe realizar validação ao nível do modelo e permite fornecer mensagens de erro de validação específicas para o estado global do modelo, ou entre duas propriedades dentro do modelo. O MVC 3 recupera agora erros da IValidatableObject interface ao atribuir o modelo e sinaliza ou destaca automaticamente os campos afetados dentro de uma vista usando os auxiliares de formulário HTML incorporados.
A interface IClientValidatable permite que ASP.NET MVC descubra em tempo de execução se um validador tem suporte para validação de cliente. Esta interface foi concebida para poder ser integrada com uma variedade de frameworks de validação.
Para mais informações sobre interfaces de validação, consulte a secção Model Validation Improvements do artigo de blog MVC 3 Preview de Scott Guthrie. (No entanto, note que a referência a "IValidateObject" no blogue deve ser "IValidatableObject".)
Melhorias na Injeção de Dependências
ASP.NET MVC 3 oferece melhor suporte para a aplicação da Injeção de Dependências (DI) e para integração com contentores de Injeção de Dependências ou Inversão de Controlo (IOC). O apoio à DI foi adicionado nas seguintes áreas:
- Controladores (fábricas de controladores de registo e injeção, controladores de injeção).
- Views (registo e injeção de motores de visualização, injeção de dependências nas páginas de visualização).
- Filtros de ação (localização e injeção de filtros).
- Ligadores modelo (registo e injeção).
- Fornecedores de validação de modelos (registo e injeção).
- Fornecedores de metadados de modelo (registo e injeção).
- Fornecedores de valor (registo e injeção).
O MVC 3 suporta a biblioteca Common Service Locator e qualquer contentor DI que suporte a IServiceLocator interface dessa biblioteca. Também suporta uma nova IDependencyResolver interface que facilita a integração de frameworks DI.
Para mais informações sobre DI no MVC 3, consulte os seguintes recursos:
- A série de artigos de blogue de Brad Wilson sobre a Localização do Serviço
- Notas de Lançamento do MVC 3
Outras Novas Funcionalidades
Integração NuGet
ASP.NET MVC 3 instala e ativa automaticamente o NuGet como parte da sua configuração. O NuGet é um gestor de pacotes gratuito e open-source que facilita a identificação, instalação e utilização de bibliotecas e ferramentas .NET nos seus projetos. Funciona com todos os tipos de projetos do Visual Studio (incluindo ASP.NET Web Forms e ASP.NET MVC).
O NuGet permite que programadores que mantêm projetos open source (por exemplo, projetos como Moq, NHibernate, Ninject, StructureMap, NUnit, Windsor, RhinoMocks e Elmah) possam empacotar as suas bibliotecas e registá-las numa galeria online. Assim, é fácil para os programadores .NET que querem usar uma destas bibliotecas encontrarem o pacote e instalá-lo nos projetos em que estão a trabalhar.
Com a Atualização ASP.NET 3 Tools, os modelos de projeto incluem bibliotecas JavaScript com pacotes NuGet pré-instalados, por isso podem ser atualizados via NuGet. O Entity Framework Code First também está pré-instalado como um pacote NuGet.
Para mais informações sobre o NuGet, consulte a documentação do NuGet.
Cache de Saída Parcial de Página
ASP.NET MVC tem suportado cache de saída para respostas de páginas inteiras desde a versão 1. O MVC 3 também suporta cache de saída parcial de página, o que permite armazenar facilmente em cache regiões ou fragmentos de uma resposta. Para mais informações sobre cache, consulte a secção Partial Page Output Caching do post de blog de Scott Guthrie sobre o candidato a lançamento MVC 3 e a secção Child Action Output Caching das Notas de Lançamento do MVC 3.
Controle Granular sobre a Validação de Pedidos
ASP.NET MVC tem validação de pedidos incorporada que ajuda automaticamente a proteger contra ataques de injeção XSS e HTML. No entanto, por vezes queres desabilitar explicitamente a validação de pedidos, como se quiseres permitir que os utilizadores publiquem conteúdo HTML (por exemplo, em entradas de blog ou conteúdo CMS). Agora pode adicionar um atributo AllowHtml a modelos ou visualizar modelos para desativar a validação de pedidos por propriedade durante a ligação de modelos. Para mais informações sobre validação de pedidos, consulte os seguintes recursos:
- A secção JavaScript e Validação Não Intrusivo no artigo de blog de Scott Guthrie sobre a versão candidata do MVC 3.
- Notas de Lançamento do MVC 3
Caixa de Diálogo Extensível "Novo Projeto"
No ASP.NET MVC 3 pode adicionar modelos de projeto, motores de visualização e frameworks de projetos de teste unitário à caixa de diálogo Novo Projeto .
Melhorias na Estrutura de Modelos
ASP.NET templates de scaffolding do MVC 3 fazem um melhor trabalho ao identificar propriedades de chave primária nos modelos e ao manuseá-las adequadamente em comparação com as versões anteriores do MVC. (Por exemplo, os modelos de andaime agora garantem que a chave primária não está estruturada como um campo de formulário editável.)
Por defeito, as estruturas de Criar e Editar agora usam o assistente Html.EditorFor em vez do assistente Html.TextBoxFor. Isto melhora o suporte para metadados no modelo sob a forma de atributos de anotação de dados quando a caixa de diálogo Adicionar Vista gera uma vista.
Novas sobrecargas para "Html.LabelFor" e "Html.LabelForModel"
Foram adicionadas novas sobrecargas de métodos para os métodos auxiliares LabelFor e LabelForModel. As novas sobrecargas permitem-lhe especificar ou sobrescrever o texto da etiqueta.
Suporte para Controladores Sem Sessão
No ASP.NET MVC 3 podes indicar se queres que uma classe controlador use o estado da sessão e, em caso afirmativo, se o estado da sessão deve ser de leitura/escrita ou só leitura. Para mais informações sobre suporte a controladores sem sessão, consulte as Notas de Lançamento do MVC 3.
Nova classe "AdditionalMetadataAttribute"
Pode usar o atributo AdditionalMetadata para preencher o ModelMetadata.AdditionalValues dicionário de uma propriedade do modelo. Por exemplo, se um modelo de visualização tiver uma propriedade que deve ser apresentada apenas a um administrador, pode anotar essa propriedade como mostrado no seguinte exemplo:
public class ProductViewModel
{
[AdditionalMetadata("AdminOnly", true)]
public string RefundCode {get; set;}
}
Estes metadados estão disponíveis para qualquer modelo de visualização ou editor quando um modelo de visualização de produto é renderizado. Cabe-lhe a si interpretar a informação dos metadados.
Melhorias no AccountController
O AccountController no modelo de projeto da Internet foi significativamente melhorado.
Novo Modelo de Projeto de Intranet
Está incluído um novo Modelo de Projeto de Intranet que permite a Autenticação do Windows e remove o AccountController.