Bruke TagHelpers vs ViewComponents i ASP.NET MVC6

stemmer
11

Jeg prøver å forstå bruken case forskjeller mellom TagHelpers og ViewComponents i asp.net 5 fordi sluttresultatet funksjonalitet virker veldig like. Vi har TagHelpers som kan skape nye HTML-tagger som blir analysert av Razor motor og deretter ViewComponents som blir eksplisitt påberopes. Begge tilbake noen HTML-innhold, begge er støttet av deres respektive grunnklasser, begge har async versjoner av metoder de kan iverksette for å få arbeidet gjort.

Så da ville man bli brukt over en annen? Eller er det jeg mangler litt informasjon?

Publisert på 08/12/2014 klokken 22:15
kilden bruker
På andre språk...                            


5 svar

stemmer
13

Det er definitivt noen begreps overlapping mellom TagHelpers og ViewComponents. TagHelpers er ditt verktøy for å arbeide med HTML hvor ViewComponents er din måte å holde seg til C #, gjør isolert arbeid og så spytte ut HTML. Jeg skal gå inn i hver i detalj:

ViewComponents
Din konseptuelt tilsvarende mini-styreenheten; vil du se at mange av de metoder / egenskapene som ViewComponents utsetter er veldig kjent for de som finnes på en Controller. Nå som for å påkalle ViewComponents, det er mer tilsvarer utnytte HTML hjelpere (en ting TagHelpers gjøre bedre). For å oppsummere ViewComponents: Deres primære formål er å føle seg som en kontroller, bo i C # land (det kan være behov for å legge verktøyet til HTML), gjøre mindre / isolert arbeid og så spytte ut strengifisert HTML.

TagHelpers
Et verktøy som gjør det mulig å jobbe ved siden eksisterende HTML eller lage nye HTML-elementer som endrer hva som skjer på en side. I motsetning ViewComponents TagHelpers kan målrette eksisterende HTML og endre sin atferd; Eksempel: Du kan legge til en betinget egenskap for alle HTML-elementer som ville betinget gjengi elementet serversiden. TagHelpers også tillate deg å blander vanlige HTML vilkår, ex:

<myTagHelper class="btn">Some Content</myTagHElper>

Som du kan se vi legger en klasse attributt til vår TagHelper akkurat som om det var HTML. For å gjøre dette i ViewComponents, ville du trenger å passere i en ordbok av attributter eller noe tilsvarende (unaturlig). Endelig flere TagHelpers kan kjøre over en enkelt HTML-element; som hver har sitt eget trinn ved modifisering utgang (muliggjør adgang for modulære TagHelper verktøy). For å oppsummere TagHelpers opp: De kan gjøre noe som ViewComponents kan gjøre og mer, men føler ikke kjenner til ting som Controllers at ASP.NET utviklere er vant til; også noen prosjekter kan ikke ønsker å blande seg server side HTML.

Ekstra:
Jeg har nylig gjorde en video utstillingsvindu fordelene av TagHelpers. I utgangspunktet en spasertur gjennom av hva de er gode på og hvordan du bruker dem. Du kan se den her .

Svarte 10/12/2014 kl. 19:44
kilden bruker

stemmer
1

En primære forskjell mellom TagHelpers og ViewComponents er relatert til hvor mye arbeid som må gjøres av gjenstanden. TagHelpers er ganske enkel, og krever bare en enkelt klasse som overstyrer Processmetode for å produsere utgangssignalet fra TagHelper. Ulempen er at hvis du gjør en kompleks arbeid for å skape indre HTML i TagHelper, det må alt gjøres i kode. I en ViewComponent, har du en mini-kontrolleren stand til å gjøre mye mer arbeid, pluss den returnerer en visning, hvor du har selve Razor syntaks kode som kan tilordnes til en modell.

Et annet innlegg nevnt at ViewComponents er mer "HTML Helper" -y i hvordan du kaller dem. ASP.NET 1.1 adressert dette problemet, slik at du kan kalle det med

<vc:view-component-name param1="value1" param2="value2></vc:view-component-name>

For de fleste formål, har en TagHelper en klar fordel, fordi det er enklere. Men hvis du trenger en mer robust løsning, er ViewComponent veien å gå.

Svarte 03/04/2017 kl. 19:42
kilden bruker

stemmer
1

Det viser seg at i .Net kjerne 1.1, kan du ringe en ViewComponent bruker tagHelper syntaks.

Angå Taylor kommentar "Deres primære formål er å føle seg som en controller", det er sant, men siden du ikke kan ringe direkte denne "micro-controller" direkte, den "controller-lignende" oppførsel er begrenset i at du bare kan lage en del av en side, kan du ikke kalle det igjen (si via en AJAX-samtale, en rediger handling, etc).

Svarte 04/12/2016 kl. 08:28
kilden bruker

stemmer
0

Når du bestemmer hvilken du vil bruke jeg alltid vurdere hvor kompleks HTML av komponenten vil bli.

Hvis det er noe enkelt som en trevisning eller en personsøker

<ul class="jstree">
    <li>Node 1</li>
    <li>...</li>
</ul>

Det er kandidat for tag hjelper , fordi det er enkelt. Stor HTML i en C # -kode vil være vanskelig å opprettholde.


På den annen side hvis det er kompleks HTML med mange divs, bilder og konfigurasjon som en fullverdig meny der det kan være vertikal eller horisontal det er din utsikt komponent . Fordelen med utsikt komponent er at du kan bruke flere visninger så for menyen slik at du kan skille horizontal.cshtml & vertical.cshtml mens gjenbruk av samme backend-kode.

Svarte 23/01/2018 kl. 00:09
kilden bruker

stemmer
0

Og likevel noe som slags tap hensikten Vis Components (IMHO) er at fra Vis Component klassen det synes å være noen måte å få tilgang til Indre Html av VC hvis du bruker koden hjelper syntaks:

 <vc:MyComponent id="1" att="something">
     Some HTML markup you would not want to put in an attribute
 </vc:MyComponent>

Det finnes imidlertid gode søknader av en VC som Bootstrap Navigation Bar View Component jeg så i en TechieJourney blogginnlegg.

Svarte 12/05/2017 kl. 15:09
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more