visual studio 2015_ implementando uma aplicação asp

28
www.devmedia.com.br [versão para impressão] Link original: http://www.devmedia.com.br/articles/viewcomp.asp?comp=32265 Visual Studio 2015: Implementando uma aplicação ASP.NET MVC 6 Veja neste artigo os novos recursos do framework ASP.NET MVC 6, em um tutorial sobre a implementação de um projeto deste tipo no Visual Studio 2015. A Microsoft vem trabalhando desde o início de 2014 em atualizações do ASP.NET e do Visual Studio. Em Fevereiro/2015 foi disponibilizado o Visual Studio 2015 CTP 6 , nova versão da IDE de desenvolvimento que conta com total suporte para a implementação de aplicações baseadas no ASP.NET 5 (inicialmente chamado de “ASP.NET vNext ”). No que se refere ao ASP.NET 5, a nova versão desta plataforma passou por mudanças bem significativas: Existe agora a possibilidade de construção de soluções multiplaforma. Além de Windows, tais aplicações também poderão ser executadas a partir de sistemas Mac ou Linux; O namespace System.Web deixou de existir, com os recursos básicos de desenvolvimento Web passando por uma completa reformulação. Muitas destas modificações levam em consideração a forte tendência de migração de aplicações para ambientes de cloud computing; Um novo modelo de programação Web unificado chamado MVC 6 será a base para a implementação de projetos MVC e/ou Web API ; Há a possibilidade de hospedagem ainda no IIS ou, até mesmo, de implementação de um processo próprio que cuide disto. A geração de projetos sob a forma de dlls deu lugar a módulos que seguem os padrões de pacotes do utilitário Nuget . Este artigo tem por meta demonstrar a novas características do MVC 6. Dentre os recursos a serem abordados estão:

Upload: nelson-jose-zanellato-junior

Post on 08-Sep-2015

21 views

Category:

Documents


0 download

DESCRIPTION

Implementando Uma Aplicação ASP Completa

TRANSCRIPT

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 1/28

    www.devmedia.com.br[versoparaimpresso]Linkoriginal:http://www.devmedia.com.br/articles/viewcomp.asp?comp=32265

    Visual Studio 2015:Implementando umaaplicao ASP.NET MVC 6Veja neste artigo os novos recursos do framework ASP.NET MVC6, em um tutorial sobre a implementao de um projeto destetipo no Visual Studio 2015.

    AMicrosoftvemtrabalhandodesdeoinciode2014ematualizaesdoASP.NETedoVisual

    Studio.EmFevereiro/2015foidisponibilizadooVisualStudio2015CTP6,novaversodaIDEde

    desenvolvimentoquecontacomtotalsuporteparaaimplementaodeaplicaesbaseadasno

    ASP.NET5(inicialmentechamadodeASP.NETvNext).

    NoqueserefereaoASP.NET5,anovaversodestaplataformapassoupormudanasbem

    significativas:

    Existeagoraapossibilidadedeconstruodesoluesmultiplaforma.AlmdeWindows,tais

    aplicaestambmpoderoserexecutadasapartirdesistemasMacouLinux

    OnamespaceSystem.Webdeixoudeexistir,comosrecursosbsicosdedesenvolvimento

    Webpassandoporumacompletareformulao.Muitasdestasmodificaeslevamem

    consideraoafortetendnciademigraodeaplicaesparaambientesdecloud

    computing

    UmnovomodelodeprogramaoWebunificadochamadoMVC6serabaseparaa

    implementaodeprojetosMVCe/ouWebAPI

    HapossibilidadedehospedagemaindanoIISou,atmesmo,deimplementaodeum

    processoprprioquecuidedisto.

    Ageraodeprojetossobaformadedllsdeulugaramdulosqueseguemospadresde

    pacotesdoutilitrioNuget.

    EsteartigotempormetademonstraranovascaractersticasdoMVC6.Dentreosrecursosa

    seremabordadosesto:

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 2/28

    OnovomodeloparamanipulaodeitensdeconfiguraoemprojetosASP.NET5

    Aintegraocomferramentasparagerenciamentodepacotesclientside,comoBower,Grunt

    enpmnonovoVisualStudio

    Umnovomecanismonativoparainjeodedependncias

    OsViewComponents,estruturasquesubstituemnonovoMVCasantigasPartialViews

    AsTagHelpers,querepresentamumaalternativanovaesimplificadaaousodeHTML

    Helpers.

    AfimdecumprirtalobjetivoserconstrudaumaaplicaoWebdeexemplonoVisualStudio2015

    CTP6,comosdetalhesdeimplementaodestaltimaestandodescritosnasprximassees.

    h3>ExemplodeimplementaodeumaaplicaoMVC6

    ProcurandodemonstraralgumasdasnovidadesdisponibilizadascomoASP.NET5sercriadauma

    novasoluoquefazusodosseguintesrecursos:

    OMicrosoftVisualStudio2015CTP5comoIDEdedesenvolvimento

    O.NETFramework4.6

    OframeworkASP.NET5paraacriaodeumaaplicaoMVC6

    OpluginjQueryOpenWeather.

    Oexemploapresentadoaseguirconsistirnaconstruodeumsiteparaconsultatemperatura

    dealgumascidadesnumdeterminadoinstante.ParaistoserimplementadoumaaplicaoMVC

    chamadaTesteVS2015MVC,aqualirseconectaraumserviodeclimatologiaconhecidocomo

    OpenWeather.OprojetoTesteVS2015MVCserdotipoASP.NETWebApplication,sendogerado

    apartirdaseleodotemplateASP.NET5PreviewStarterWeb,conformeaFigura1.

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 3/28

    Figura1.SelecionandootemplateASP.NET5PreviewStarterWebnoVisualStudio2015

    NaFigura2possvelvisualizaraestruturaodoprojetoTesteVS2015MVC,comosdiferentes

    arquivosgeradoslogoapsacriaodomesmo.

    Figura2.EstruturainicialdoprojetoTesteVS2015MVC

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 4/28

    Asprximasseesdescrevemosdiferentesajusteseimplementaesqueseroefetuados,de

    formaadetalharasnovidadesemodificaesnamaneiracomoaplicaesASP.NETso

    concebidas.

    Definindo os itens de configurao e o acesso aos mesmosUmadasmudanassignificativasemprojetosMVC6foiasubstituiodoWeb.configpeloarquivo

    config.json.Esteltimodocumentocontacomdeclaraesdeitensdeconfiguraonoformato

    JSON,adotandoummodelomaisflexvelequefacilitaarealizaodecustomizaesnas

    definiesdasquaisumaaplicaodepende.

    NaListagem1estocdigoesperadoparaoarquivoconfig.json.Conformepossvelobservar,

    umachavechamadaTestecontmdoissubnveisformadospelaspropriedadesCidade1e

    Cidade2.Ocontedodestesdoisltimoselementosservirdebaseparaasconsultasaoservio

    declimatologiaOpenWeather(nocasoespecficodesteexemplo,paraascidadesdeSeattlee

    Paris).

    Listagem1.Arquivoconfig.json

    {"Teste":{"Cidade1":"Seattle,US","Cidade2":"Paris,FR"}}

    OtipoConfigurationManagerdeixoudeexistir,tendosidosubstitudoporumaimplementao

    derivadadainterfaceIConfiguration(estaltimapertencenteaonamespace

    Microsoft.Framework.ConfigurationModel).

    Pormaisqueoarquivoconfig.jsonrepresenteodefaultparaprojetosASP.NET5,asconfiguraes

    deumaaplicaopodemcontarcomoutrasorigens.Adefiniodequaisarquivoscomitensde

    configuraoseroutilizadosporumaaplicaoacontecenaclasseStartup(umequivalenteao

    antigoGlobal.asax).NaListagem2encontraseaimplementaodestetipo:

    ApropriedadeConfigurationarmazenarumainstnciadeumaclassequederivade

    IConfiguration

    JnoconstrutordotipoStartupumarefernciadaclasseConfiguration(namespace

    Microsoft.Framework.ConfigurationModel)sercriadaeassociadapropriedadedemesmo

    nome.PercebeseaindanestepontoousodosmtodosAddJsonFile(adicionandoocontedo

    doarquivoconfig.jsonsconfiguraesdisponveis)eAddEnvironmentVariables(parao

    acessoavariveisdeambiente).Outrosarquivos.jsondeconfiguraopoderiamser

    includosaquiopcionalmente,bemcomoarquivoscomaextenso.ini(atravsdaoperao

    AddIniFile)

    OmtodoConfigureServicesserempregadonaconfiguraodomecanismodeinjeode

    dependnciasdoASP.NETMVC.Estaoperaorecebecomoparmetroumarefernciado

    tipoIServiceCollection(namespaceMicrosoft.Framework.DependencyInjection),aqualser

    utilizadanomapeamentodedependnciasentretiposbsicos(comointerfaces)eas

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 5/28

    implementaesconcretascorrespondentes.Nocasoespecficodoexemplodesteartigo,

    sernecessrioalteraromtodoConfigureServices,demaneiraqueainstnciade

    IServiceCollectionconsigamapeartodasasocorrnciasdeIConfigurationparaainstncia

    associadapropriedadeConfiguration.QuantochamadaaomtodoAddSingleton,este

    procedimentofazcomqueumanicadeinstnciadeIConfigurationsejautilizadana

    resoluodetodasasdependnciasencontradasaolongodeumaaplicao,constituindo

    assimumexemploprticodeaplicaodopatternSingleton.

    importantedestacaraindaqueosuporteinjeodedependnciastambmfoiremodeladono

    ASP.NET5.Emversesanteriores,aopoporestetipodeprticaexigiaousodeumcontainer

    DIcomoUnity,NInjectouSpring.NET,dentreoutrasalternativaspossveis.Emboraestaopo

    aindaestejadisponvel,anovaversodatecnologiaASP.NETtambmofereceummecanismo

    nativoparaainjeodedependncias.

    Listagem2.ClasseStartup

    usingSystem;usingMicrosoft.AspNet.Builder;usingMicrosoft.AspNet.Diagnostics;usingMicrosoft.AspNet.Diagnostics.Entity;usingMicrosoft.AspNet.Hosting;usingMicrosoft.AspNet.Identity;usingMicrosoft.Framework.ConfigurationModel;usingMicrosoft.Framework.DependencyInjection;usingMicrosoft.Framework.Logging;usingMicrosoft.Framework.Logging.Console;usingTesteVS2015MVC.Models;namespaceTesteVS2015MVC{publicclassStartup{publicStartup(IHostingEnvironmentenv){Configuration=newConfiguration().AddJsonFile("config.json").AddEnvironmentVariables();}publicIConfigurationConfiguration{get;set;}publicvoidConfigureServices(IServiceCollectionservices){services.AddSingleton(_=>Configuration);...}...}}

    Configurando o uso da biblioteca Open Weather

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 6/28

    NestaseoserdemonstradaautilizaoconjuntadasferramentasBower,Gruntenpm,afimde

    incluirosarquivosnecessriosparausodabibliotecaOpenWeatheraoprojetodetestes.

    importanteressaltarquenoVisualStudio2015amanipulaodepacotesclientside(como

    bibliotecasdescriptsearquivosCSS)ficouacargodestassolues,comaprpriaIDEdispondo

    defuncionalidadesquesuportamaintegraocomtaisgerenciadores.

    Umprimeiroajustedeverserrealizadonoarquivobower.json,oqualcontmasdependnciasde

    pacotesclientsidecontroladaspormeiodaferramentaBower.

    Ainclusodenovospackagesnoarquivobower.jsonfacilitadagraasaosuporteoferecidopelo

    IntelliSense.AcessandodadosdeumrepositrioquecontmospluginssuportadospeloBower,

    esterecursoirlistarosdiversospacotesdisponveis,assimcomoasversesmaisrecentesdos

    mesmos(Figura3).

    NaseoexportsOverridedoarquivobower.jsonsernecessrioespecificaraindaquaisarquivos

    dopluginOpenWeatherserocarregadosdentrodapastawwwroot(almdosscripts,esta

    bibliotecatambmdisponibilizafolhasdeestiloCSSeimagensparaaexibiodeinformaes

    climticas).

    NaListagem3encontramsetodasasmudanasrealizadasnoarquivobower.jsonoutras

    dependnciascomooBootstrapejQueryjhaviamsidoincludasanteriormente,durantea

    criaodoprojetoTesteVS2015MVC.Ousodosmbolo~(til)antecedendoonmerodeverso

    dopluginOpenWeather(1.2.0)indicaautilizaodequalquerpatchigualousuperiora0

    (considerandoasverses1.2destabiblioteca).

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 7/28

    Figura3.OsuportedoIntelliSenseparaaediodoarquivobower.json

    Listagem3.Arquivobower.json

    {"name":"WebApplication","private":true,"dependencies":{"bootstrap":"3.0.0","jquery":"1.10.2","jqueryvalidation":"1.11.1","jqueryvalidationunobtrusive":"3.2.2","hammer.js":"2.0.4","bootstraptouchcarousel":"0.8.0",

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 8/28

    "openweather":"~1.2.0"},"exportsOverride":{"bootstrap":{"js":"dist/js/*.*","css":"dist/css/*.*","fonts":"dist/fonts/*.*"},"bootstraptouchcarousel":{"js":"dist/js/*.*","css":"dist/css/*.*"},"jquery":{"":"jquery.{js,min.js,min.map}"},"jqueryvalidation":{"":"jquery.validate.js"},"jqueryvalidationunobtrusive":{"":"jquery.validate.unobtrusive.{js,min.js}"},"hammer":{"":"hammer.{js,min.js}"},"openweather":{"js":"src/openWeather.js","css":"src/css/*.*","img":"src/img/"}}}

    VerificandoaestruturadoprojetoTesteVS2015MVCdentrodoSolutionExplorer,serpossvel

    constatarqueopluginOpenWeatheraindanofoiinstalado(Figura4).Ainclusodosarquivos

    dabibliotecaOpenWeatheraplicaodeexemploaconteceratravsdafuncionalidadeTask

    RunnerExplorer,conformedetalhadomaisadiante.

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 9/28

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 10/28

    Figura4.PluginOpenWeatheraindanoinstalado

    ParavisualizarajanelaTaskRunnerExplorerclicarcomobotodireitodomousesobreoarquivo

    gruntfile.js,acionandoemseguidaaopodemesmonome(Figura5).

    Figura5.AcessandooTaskRunnerExplorer

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 11/28

    ComajanelaTaskRunnerExplorerativa,clicardestavezcomobotodireitomousesobreo

    itembowereselecionaraopoRun(Figura6).Astarefasconfiguradasparaaferramenta

    Bowerseroexecutadas(combasenasinstruesdefinidasnoarquivogruntfile.js),comum

    promptexibindooresultadodestaao(Figura7).

    Figura6.ExecutandoastarefasparaaferramentaBower

    Figura7.ResultadodaexecuodastarefasnoTaskRunnerExplorer

    AoverificarnovamenteaestruturadoprojetoTesteVS2015MVC,serpossvelconstatarquea

    instalaodopluginOpenWeatherfoiconcludacomsucesso(Figura8).

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 12/28

    Figura8.PluginOpenWeatherjinstalado

    Criando o View Component de informaes climticas

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 13/28

    ComoASP.NET5nomaispossvelousodePartialViews.Umnovotipodeestruturafoi

    disponibilizado,deformaasubstituiresteselementos:tratasedorecursoconhecidocomoView

    Component.

    AssimcomoaconteciacomasPartialViewsemversesanterioresdoframeworkMVC,osViews

    Componentstambmforamprojetadosdeformaafavoreceroreusoepossibilitarainserode

    contedoempontosespecficosdaspginasdeumaaplicao.AdiferenanoMVC6estna

    formacomoestescomponentessodefinidos.UmViewComponentdispensaacodificaodeum

    novoControllercomumaActionassociadaaoprocessamentodoitemou,mesmo,aalteraode

    umaconstruoprexistente.

    AimplementaodeumnovoViewComponentenvolve:

    Acodificaodeumanovaclasse,normalmentecriadanapastaComponentsdeumprojeto

    MVC

    UmanovaViewchamadaDefault.cshtmlelocalizadanocaminho

    \Views\Shared\Components\.Estearquivotemporobjetivo

    produzirocdigoHTMLequivalentevisualizaodocomponente.

    NaFigura9estassinaladaaorganizaoesperadaparaaimplementaodoViewComponent

    ClimaCidade.Aideiaqueestecomponentesirvadebaseparaaexibiodeinformaes

    climticasdeumacidadeespecfica.

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 14/28

    Figura9.EstruturadoViewComponentClimaCidade

    JaListagem4trazadefiniodoViewComponentClimaCidade(arquivoClimaCidade.cs):

    AclasseClimaCidadeComponentderivadotipobsicoViewComponent(namespace

    Microsoft.AspNet.Mvc).Essaestruturafoimarcadaaindacomoatributo

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 15/28

    ViewComponentAttribute(namespaceMicrosoft.AspNet.Mvc),emcujoconstrutorindicadoo

    nome/identificaodoViewComponentqueseestcriando(nocaso,ClimaCidade)

    OmtodoInvokedevolvecomoresultadoumainstnciadeIViewComponentResult

    (namespaceMicrosoft.AspNet.Mvc),aqualgeradaatravsdeumachamadaoperao

    View.ImportantedestacaraindaousodoobjetoViewBag,noqualapropriedade

    ReferenciaCidadeconteraidentificaodalocalidadeinformadacomoparmetroaose

    acionaromtodoInvoke.

    OBSERVAO:Porconveno,nomesdeclassesquerepresentamatributosterminamcomo

    sufixoAttribute.Autilizaodeexpressesqueenvolvamumatributovinculandoomesmoauma

    estruturadecdigodispensaousodetalsufixoaofinaldonome.Logo,aoseempregaroatributo

    ViewComponentAttribute,aclassemarcadacomessaconstruoestarassociadaapenasauma

    instruocomovalorViewComponent(entrecolchetes).

    Listagem4.ClasseClimaCidade

    usingSystem;usingMicrosoft.AspNet.Mvc;namespaceTesteVS2015MVC.Components{[ViewComponent(Name="ClimaCidade")]publicclassClimaCidadeComponent:ViewComponent{publicIViewComponentResultInvoke(stringreferenciaCidade){ViewBag.ReferenciaCidade=referenciaCidade;returnView();}}}

    NaListagem5encontraseocontedodoarquivoDefault.cshtml,oqualrepresentaa

    visualizaoemHTMLgeradapeloViewComponentClimaCidade:

    Analisandomelhoresteconjuntodeinstrues,notasequetaltipodeestrutura(View

    Components)nodifereemnadadeumaViewtradicional

    AchamadaaomtodoopenWeatherfarcomqueumarequisiosejaenviadaaoservio

    climticoOpenWeather.Asinformaesretornadasseroentoutilizadasnopreenchimento

    dosdiferenteselementosdoViewComponent,fazendotambmusoparaistoderecursos

    comoimagensquecompemopluginadicionadoanteriormente.

    Listagem5.ArquivoDefault.cshtml(ViewComponentClimaCidade)

    .infoTemperatura{backgroundcolor:lightblue;paddingtop:30px;paddingbottom:30px;width:400px;}

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 16/28

    .legendaClima{fontsize:26pt;paddingtop:30px;}LocalidadeTemperatura()Umidade$('.temperatura').openWeather({city:'@ViewBag.ReferenciaCidade',minTemperatureTarget:'.temperaturaminima',maxTemperatureTarget:'.temperaturamaxima',humidityTarget:'.umidade',placeTarget:'.localidade',iconTarget:'.iconeclima',customIcons:'/lib/openweather/img/icons/weather/',success:function(){$('.infoTemperatura').show();}});

    Ajustes na View _Layout.cshtml

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 17/28

    AView_Layout.cshtml(localizadaem\Views\Shared\)tambmprecisarseralterada,afimde

    quearefernciaparaabibliotecajQuerysejaaprimeiradeclaraodescriptsnestearquivo.Na

    Listagem6possvelobservarocdigoesperadoparaestearquivo.

    Listagem6.View_Layout.cshtml

    [email protected]("TesteVS2015MVC","Index","Home",new{area=""},new{@class="navbarbrand"})@Html.ActionLink("Home","Index","Home")@Html.ActionLink("Sobre","About","Home")@Html.ActionLink("Contato","Contact","Home")@RenderBody()2015RenatoGroffe@RenderSection("scripts",required:false)

    Injeo de dependncias e estruturas para a visualizao do

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 18/28

    clima em cidadesOacessosinformaesclimticasdascidadesindicadasnoarquivoconfig.jsonaconteratravs

    doControllerCidadeController.EssaestruturapodesercriadapormeiodajanelaSolution

    Explorer:clicarparaistocomobotodireitodomousesobreapastaControllers,selecionandoem

    seguidanomenudeatalhoaopoAdde,finalmente,NewItem....Aparecerentoajanela

    AddNewItemmarcarotemplateMVCControllerClass,preenchendoocampoNamecomo

    valor"CidadeController".

    OprximopassoserarealizaodeajustesnestenovoController(Listagem7):

    UmatributoprivadobaseadonainterfaceIConfiguration(_configuration)precisarser

    declaradonadefiniodotipoCidadeController,deformaapossibilitaroacessoaositensde

    configuraodentrodesteController

    UmconstrutortambmdeverserimplementadoparaaclasseCidadeController.Ser

    atravsdessaestruturaqueomecanismodeinjeodeinjeodedependnciasirresolver

    adependnciaparacomIConfiguration(oconstrutordeCidadeControllerserinvocado

    automaticamentepelocontainerDI)

    NaActionCidade1possvelobservarqueovalordeCidade1(nocaso,Seattle,US)est

    sendoassociadopropriedadeViewBag,atravsdeumachamadaaomtodoGetda

    instnciaassociadaaoatributo_configuration.Oacessoaumapropriedadedefinidano

    arquivoconfig.jsonrequerousodocaracter:(doispontos),deformaasepararcadanvel

    queantecedeaconfiguraoemquesto

    JaActionCidade2servirdebaseparaaexibiodosdadosdacidadedeParis,

    procedimentoesteaserdetalhadonasseesseguintes.

    Listagem7.ControllerCidadeController

    usingMicrosoft.AspNet.Mvc;usingMicrosoft.Framework.ConfigurationModel;namespaceTesteVS2015MVC.Controllers{publicclassCidadeController:Controller{privateIConfiguration_configuration;publicCidadeController(IConfigurationconfig){this._configuration=config;}publicIActionResultCidade1(){ViewBag.Cidade1=_configuration.Get("Teste:Cidade1");returnView();}publicIActionResultCidade2(){returnView();}

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 19/28

    }}

    OBSERVAO:Maisadianteserodemonstradasasoutraspossibilidadesdeusodomecanismo

    deinjeodedependnciasdoASP.NET5.

    ParacriaraViewassociadaActionCidade1,criardentrodapastaViewsumanovasubpasta

    chamadaCidade(comoindicadonaFigura10).OarquivoCidade1.cshtmlsergeradoneste

    local,pormeiodautilizaodotemplateMVCViewPage,comomostraaFigura11.

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 20/28

    Figura10.Estruturasparaavisualizaodeinformaesclimticas

    Figura11.CriandoaViewCidade1.cshtml

    OcdigoquedefineaViewCidade1.cshtmlestnaListagem8:

    OViewComponentClimaCidadeseracionadoatravsdomtodoInvokedoobjeto

    Component,recebendocomoparmetrosonomedocomponente,almdovalordacidade

    queestassociadaViewBag.OHTMLproduzidoserentoincorporadoaocontedoda

    Viewemquesto

    OmtodoActionLinkdoobjetoHtmlirgeraraindaumlink,paraqueumusuriosejacapaz

    deretornartelainicialdaaplicao.

    Listagem8.ViewCidade1.cshtml(ControllerCidadeController)

    @Component.Invoke("ClimaCidade",ViewBag.Cidade1)@Html.ActionLink("Voltar","Index","Home")

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 21/28

    Ativando o uso de Tag Helpers e mais injeo de dependnciasOutradasnovidadesdoMVC6apossibilidadedeusodasTagHelpersnolugardosHtmlHelpers

    convencionais.AoinvsdeexigirumachamadaaummtodoauxiliarnocdigodeumaView,este

    recursopermiteaobtenodomesmoresultadoapartirdautilizaodeumasintaxebaseadaem

    tags(emummodosimilarqueleempregadocomHTMLpadro).

    Atopresentemomento(inciodeMaro/2015)estenovomecanismonoseencontraativopor

    defaultemprojetosMVC6.Diantedisto,fazsenecessriaainclusoderefernciasaoprojeto

    Microsoft.AspNet.Mvc.TagHelpersemsoluesquevenhamadependerdesteltimo.Este

    procedimentodeveserefetuadoatravsdoutilitrioNuGet,oqualpodeseracessadocomoboto

    direitodomousesobreoitemReferencesdeumprojeto(Figura12).

    Figura12.GerenciandoasdependnciasdoprojetoviaNuGet

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 22/28

    NainterfacedaferramentaNuGetpesquisarporTagHelpers.Selecionaroprojeto

    Microsoft.AspNet.Mvc.TagHelpers(Figura13),prosseguindocomainstalaodomesmo.Ao

    trminodestespassos,serpossvelconstatarquearefernciafoidevidamenteincludana

    aplicaodetestes(Figura14).

    Figura13.GerenciandoasdependnciasdoprojetoviaNuGet

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 23/28

    Figura14.RefernciaparausodeTagHelpersjincludanaaplicaodetestes

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 24/28

    Oarquivo_ViewStart.cshtmltambmdeversermodificado,afimdetornarpossvelousodeTag

    HelpersnasViewsdoprojetoTesteVS2015MVC.oquedemonstraaListagem9,naquala

    diretiva@addtaghelperreferenciaonamespaceMicrosoft.AspNet.Mvc.TagHelpers.Talajustefar

    comquemuitasdasfuncionalidadesdosHtmlHelpersqueintegramoframeworkMVCpossamser

    acionadaspormeiodetagsnasViewsdaaplicaoaquiapresentada.

    Listagem9.View_ViewStart.cshtml

    @usingTesteVS2015MVC;@addtaghelper"Microsoft.AspNet.Mvc.TagHelpers"@{Layout="/Views/Shared/_Layout.cshtml";}

    EmborapossuindofinalidadeidnticadaViewimplementadanaseoanterior,ocontedodo

    arquivoCidade2.cshtml(Listagem10)apresentanovosdetalhesqueaindanoforamabordados

    nesteartigo.Taisdiferenastmporobjetivodemonstrarousodomecanismodeinjeode

    dependnciasedeTagHelpersemViews:

    Ocdigoseiniciacomaclusula@usingreferenciandoonamespace

    Microsoft.Framework.ConfigurationModel

    Jaclusula@injectserutilizadapararesolveradependnciarepresentadapelavarivel

    config,deformaqueseassocieaestarefernciaainstnciadotipoIConfigurationgerada

    duranteainicializaodaaplicao

    OViewComponentClimaCidadetambmseracionadoviamtodoInvoke,recebendocomo

    parmetroovalorassociadoaoitemCidade2doarquivodeconfiguraes(equeobtidoa

    partirdeumachamadaaomtodoGetdisponibilizadopeloobjetoconfig)

    Ageraodeumlinkqueredirecionaousurioparaapginainicialdaaplicaotambm

    acontecerdeumaoutramaneira,dispensandoassimanecessidadedeseefetuaruma

    chamadaaomtodoActionLinkdoobjetoHtml.EstenovoexemplofazusodeumTagHelper,

    noqualforamindicadosoControllereaActionaseremexecutados(pormeiodo

    preenchimentodosatributosaspcontrollereaspaction,respectivamente).

    Listagem10.ViewCidade2.cshtml(ControllerCidadeController)

    @usingMicrosoft.Framework.ConfigurationModel@[email protected]("ClimaCidade",config.Get("Teste:Cidade2"))Voltar

    Ajustes finais e ltimas consideraes sobre injeo de

    dependncias

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 25/28

    AclasseHomeControllertambmprecisarserajustada,sendoquenaListagem11estocdigo

    esperadoparaessaestrutura:

    EsteControllercontacomumapropriedadechamadaConfiguration,qualseratribuda

    umainstnciadotipoIConfigurationviamecanismodeinjeodedependnciasdoASP.NET

    5.ParaqueistoaconteaapropriedadeConfigurationfoimarcadacomoatributo

    ActivateAttribute(namespaceMicrosoft.AspNet.Mvc)

    AActionIndexfazusodapropriedadeConfiguration,demaneiraaassociarocontedodos

    itensdeconfiguraoCidade1eCidade2apropriedadesdoobjetoViewBag.

    Listagem11.ControllerHomeController

    usingMicrosoft.AspNet.Mvc;usingMicrosoft.Framework.ConfigurationModel;namespaceTesteVS2015MVC.Controllers{publicclassHomeController:Controller{[Activate]publicIConfigurationConfiguration{get;set;}publicIActionResultIndex(){ViewBag.Cidade1=Configuration.Get("Teste:Cidade1");ViewBag.Cidade2=Configuration.Get("Teste:Cidade2");returnView();}...}}

    Porfim,naListagem12estaimplementaodaViewIndex.Almdeconsumirosvalores

    atribudosaoobjetoViewBagemHomeController,estearquivoaindafazusodeumHtmlHelpere

    deumaTagViewparaageraodoslinksdevisualizaodoclimanascidadesdeSeattleeParis.

    Listagem12.ViewIndex.cshtml(ControllerHomeController)

    @{stringcidade1=ViewBag.Cidade1;}ASP.NET5ExemplodeaplicaoconstrudacomoframeworkASP.NETMVC6.Consultaainformaesclimticasselecioneumacidade:

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 26/28

    @Html.ActionLink(cidade1,"Cidade1","Cidade")@ViewBag.Cidade2

    Teste da aplicao criadaNaFigura15apresentadaatelainicialdaaplicaoTesteVS2015MVC.

    Figura15.TelainicialdaaplicaoTesteASPNETvNext

    AoacionarolinkSeattle,USseroexibidasascondiesclimticasparaestacidadecomo

    indicadonaFigura16.JavisualizaodasinformaessobreParisestnaFigura17.

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 27/28

    Figura16.InformaesclimticasdacidadedeSeattle

    Figura17.InformaesclimticasdacidadedeParis

    AintenodesteartigofoidemonstrarosnovosrecursosparaaimplementaodeaplicaesMVC

    noASP.NET5apartirdeumexemplosimples,masquecontemplasseasprincipaisnovidades

    destaplataformaWeb.

  • 03/07/2015 VisualStudio2015:ImplementandoumaaplicaoASP.NETMVC6

    http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=32265 28/28

    Emboratenhamocorridograndesmudanas,inegvelqueoconhecimentoadquiridoemverses

    anterioresdoASP.NETMVCaindacontinuarvlido.HmaisdeumanoaMicrosoftvem

    trabalhandonesteprocessodereformulao,sendopossvelpressuporqueaindaem2015

    acontecerolanamentodasnovasversesjestabilizadasdoVisualStudioedaplataforma

    ASP.NET.

    Esperoqueestecontedopossatersidotil.

    Atumaprximaoportunidade!

    Links

    IntroducingASP.NET5

    http://weblogs.asp.net/scottgu/introducingaspnet5

    ItensdeconfiguraonoASP.NET5:oquemudouemrelaosversesanteriores?

    http://www.tiselvagem.com.br/geral/itensconfiguracaoaspnet5/

    RenatoJoseGroffe

    Atuacomoconsultorematividadesvoltadasaodesenvolvimentodesoftwareshmaisde10anos.BacharelemSistemasdeInformao,comespecializaoemEngenhariadeSoftware.MicrosoftCertifiedTechnologySpecialist(Web,WCF,[...]