visual studio 2015_ implementando uma aplicação asp
DESCRIPTION
Implementando Uma Aplicação ASP CompletaTRANSCRIPT
-
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,[...]