leppoisa reititys ASP.NET MVC, perustuu Ruby On Rails reititys DSL. Se utlizes HTTP verbejä pitää ainutlaatuisia polkuja minimiin, optimoimalla ohjaimet rakenne.

PM > Install-Package restful Routing

Tervetuloa levolliseen reititykseen ASP.NET MVC! Reititys on kiistatta kaiken ytimessä ASP.Net MVC-Sovellukset. Reittien hoitaminen itse voi olla hankalaa, turhauttavaa ja tuottamatonta. Jotkut kehittäjät käyttävät catch-all-reittiä, mikä voi johtaa odottamattomiin ongelmiin sovelluksen kasvaessa. Levollinen reititys ratkaisee reitityksen hallinnan ongelman tarjoamalla mielipiteitä sisältävän rajapinnan reittien rekisteröinnistä.

toivomme, että huomaat tämän kirjaston olevan niin helppokäyttöinen, että ihmettelet, miten olet koskaan kehittynyt ASP.Net MVC sovelluksia ilman sitä.

kultainen seitsemän

leppoisa reititys perustuu Resources: n ja kultaisen seitsemän toiminnan ideaan:

toiminta HTTP-menetelmä
indeksi GET
Näytä GET
luo POST
Uusi GET
EDIT GET
päivitys PUT
tuhoa poista

tavoitteena levollinen reititys on tehdä sinulle concious Oman ohjaimet. Vaikka voit joustaa sääntöjä tarvittaessa, sinun pitäisi todella keskittyä pitämään kaikki ohjaimet rajoitettu nämä seitsemän toimintoa. Jos taistelette rauhallisen reitityksen yleissopimuksia vastaan, ette hyödynnä itsepintaisen kehyksemme voimaa ja ole onneton tehdessänne niin.

Oletusreitti

ennen kuin sukellat levolliseen reititykseen, haluaisin keskustella ASP.NET MVC. Monissa starter-malleissa se on hyödyllinen työkalu, kun aloitat, mutta en suosittele käyttämään sitä missään tuotantoympäristössä. Luettelen syyt alla:

  • mikä tahansa projektisi ohjain on käytettävissä, vaikka ei olisi rekisteröitynyt Reitityskehykseen kuten levollinen reititys.
  • se voi johtaa odottamattomaan lähtöruuturatkaisuun ja tuntien virheenkorjaukseen.

Vaihe 1. Leppoisan reitityksen asentaminen

aloittaaksesi oletamme, että aloitat olemassa olevalla reitityksellä ASP.Net MVC projekti ja ymmärtää, miten päästä siihen pisteeseen.

avaa Paketinhallintakonsoli ja kirjoita seuraava:PM> Install-Package RestfulRouting.

jos et halua käyttää Paketinhallintakonsolia, voit napsauttaa www-projektiasi hiiren kakkospainikkeella ja valita kontekstivalikon ”Hallitse Nuget-paketteja”. Etsi kohdetta RestfulRouting asenna paketti.

Vaihe 2. Levollisen reitityksen määrittäminen

projektiin olisi pitänyt tehdä pari muutosta, nimittäin kaksi tiedostoa lisättiin: Routes.cs ja ApplicationController.

Routes.cs pitäisi näyttää oikealta löytyvältä osastolta. Meillä on jo hieman apua mukana sinulle tässä tiedostossa. Kaikki eivät ole kirjoittamassa blogihakemusta, joten voit vapaasti poistaa kommentoidun koodin, kun olet katsonut sitä.

huomaa riippuvuus Webactivatorista, tämä varmistaa, että reitit rekisteröidään, kun hakemuksesi alkaa. Voit poistaa tämän riippuvuuden, jos haluat mieluummin itse käyttää Start – menetelmää.

// setting the root routemap.Root<HomeController>(x => x.Index());

sinun kokoonpanollesi, muista asettaa Root;

lisäksi Routes.cs saa myös ApplicationController. Tämän perusohjaimen käyttäminen on vapaaehtoista, mutta siinä on koodi, jota tarvitaan Formaattitulosten

vaiheen 3 hyödyntämiseen. Näytä moottorin kokoonpano (valinnainen)

ASP.Net MVC riippuu näkymä moottorit paikantaa näkymät. Vaikka oletusnäkymämoottori on ok, huomasimme, että kansiorakenne on hieman monisanainen. Jos haluat käyttää näkymämoottoreitamme, muuta globaalia.Asax tiedosto näyttää seuraavan.

Siinä Se On. Koodi! Koodi! Koodi!

jos haluat lisätietoja siitä, miten ja mitä reittien rekisteröinnissä tapahtuu, jatka lukemista.

reitit

tässä osiossa kerrotaan RouteSet. Luokka on kriittinen, jotta levollinen reititys onnistuu.

Basics

a RouteSet on kokoelma reittikarttoja. Se ei ainoastaan määritä reittejä sovelluksessa, mutta se voi muodostaa yhteyden muihin reitteihin, luoden runsaasti reittejä vähällä vaivalla.

kaikki reitit on määritelty Routasetin Map – menetelmän sisällä.

Map: iin siirretty IMapper-instanssi esittelee tavan kartoittaa reitit RouteTable sanakirjaan joka ASP.Net MVC-sovellus. Jos olet asentanut Restful Routing kautta Nuget, olet huomannut RouteSet jo luotu sinulle.

yhdistäminen

joskus haluat loogisesti erottaa reittisi. Sen sijaan, että kaikki reitit ryhmitettäisiin yhteen Reitistöön, tarjoamme mahdollisuuden yhdistää reitit. Sinun täytyy valita yksi Routeset on root teidän RouteSets, jonka jälkeen voit liittää muita RouteSets miten haluat. Routeet tukevat myös nimiavaruuksia, kuten alueita.

Configuration (valinnainen)

Reittisarja tarjoaa asetuksia, jotka voivat muuttaa reitin rekisteröinnin käyttäytymistä. Nämä ominaisuudet löytyvät yhteydessä RouteSet. Useimmat kehittäjät eivät halua koskea näitä ominaisuuksia.

asetus oletusarvo tulos
pienaakkoset true rekisteröi URL-osoitteet pienaakkosin invarianttiviljelmään
vähämerkityksiset tulokset true rekisteröi toimesi, kun ne rekisteröidään normaalisti pienaakkosin invariant-kulttuuriin
vähämerkityksiset toimet true rekisteröi toimesi, kun olet rekisteröitynyt Route in lowercase invariant culture
MapDelete false Rekisteri an poiston lisätoiminto . Käytetään poistamaan vahvistussivu ennen resurssin poistamista.

kartoitus

levollinen reititys on kartoituskehys, ja kartoituksen tekemiseen tarjoamme joukon käsitteitä ja rajapintoja. Lue kunkin käyttöliittymän alla ja mitä toimintoja kukin tarjoaa yksityiskohtaisesti.

Root

map.Root<HomeController>(x => x.Index());

jokainen sovellus tarvitsee oletussivun, eikä juuripolun rekisteröinti ole koskaan ollut helpompaa. Jos hakemuksesi isännöi niin sitä pidettäisiin juurena.

hakemuksessasi voi olla vain yksi juuri.

resurssi

map.Resource<ProfileController>();

resurssi on ”asia”, jota voidaan ajatella yksioikoisesti sovelluksen käyttäjän näkökulmasta. Todennetun käyttäjän profiili on hyvä esimerkki resurssista. Katso seuraavaa url-osoitetta. Kun kyseessä on profiili, määrität tunnisteen evästeen (tai muun implisiittisen keinon) kautta, etkä tarvitse tunnistetta reitin polussa.

url-osoite olettaa, että sovellus tietää, mikä profiili on ja miten se esitetään. Miltä rekisteröinti näyttäisi nyt Routaputkessa?

toiminnot ja Http-menetelmät

kun resurssi rekisteröidään, joukko toimintoja ja menetelmiä rekisteröidään automaattisesti. Rekisteröi rekisterinpitäjäsi ja toteuta toimenpiteet.

toiminta HTTP-menetelmä
Näytä GET
luo POST
Uusi GET
EDIT GET
päivitys PUT
tuhoa poista

meidän esimerkistä ProfileController saat seuraavan tuotoksen:

toiminta HTTP-menetelmä tulos (ohjain#toiminta) Url
Näytä Hanki profiili#Näytä / profiili
Uusi GET profile#new / profile / new
luo POST profiili#Luo / profiili
EDIT GET profile#edit / profile / edit
päivitys PUT profiili#päivitys / profiili
DESTROY DELETE profile#destroy / profile

nimeäminen

joskus nimeät ohjaimesi yhden asian, mutta haluat resurssin url: n heijastavan jotain aivan muuta. Tämä on helppo tehdä.

profile#show Uusi url-osoite muutetaan

Additionally, you can change the default action names of a resource by using the PathNames – menetelmäksi. Tämä ei ole suositeltavaa, mutta haluamme antaa sinulle vaihtoehtoja.

toimien valitseminen

joskus et välttämättä tarvitse kaikkia keinoja, joita tarjoamme resurssiksi. Kuvittele seuraavat esimerkit:

  • käyttäjänä minun ei pitäisi pystyä luomaan profiilia,koska se luodaan implisiittisesti rekisteröityessä.
  • käyttäjänä minun pitäisi pystyä muokkaamaan nykyistä profiiliani.
  • käyttäjänä minun ei pitäisi pystyä poistamaan profiiliani.
  • käyttäjänä minun pitäisi pystyä näkemään profiilini

tarkastelun jälkeen meidän tarvitsee vain rekisteröidä seuraavat toiminnot: Show, Edit, Update. Rajoittaaksemme resurssimme näihin toimiin, käyttäisimme seuraavaa koodia Routesetissämme.

Pesimälähde

// NESTING A RESOURCEmap.Resource<ProfileController>(profile => { profile.Resource<CreditCardController>()});

resurssi on joskus riippuvainen toisesta resurssista. Kun peität resurssia, sinulla on yksi yhteen suhde vanhemman resurssin ja sen riippuvaisen resurssin välillä.

jos luot creditcard resurssin, ja peität sen meidän profile resurssiimme (kuten huomioitu oikealla), saat tuloksena olevat reitit pois lukien profiilireitit:

Action HTTP Method Result (controller#action) Url Template
SHOW GET creditcard#show /profile/creditcard
NEW GET creditcard#new /profile/creditcard/new
CREATE POST creditcard#create /profile/creditcard
EDIT GET creditcard#edit /profile/creditcard/edit
UPDATE PUT creditcard#update / profile / creditcard
DESTROY DELETE creditcard#destroy / profile / creditcard

resurssit

map.Resources<ProductsController>();

resurssit edustavat kokoelmia, joissa on Oma toimialue. Kuvittele rakentaa tallentaa sovelluksen, saatat haluta paljastaa luettelo niin, että asiakkaat voivat etsiä ja ostaa tuotteita. Tuotteita pidettäisiin resursseina. Verkko-osoite, joka syntyy, kuvastaisi myös sitä, että tarjolla on monia tuotteita.

huomaa tuotteiden moniarvoisuus. Jos olet aloittamassa verkkokaupan sivusto, sinun todennäköisesti myydä enemmän kuin yksi tuote kerrallaan.

toimet

kun resursseja rekisteröidään, joukko toimia ja menetelmiä rekisteröidään automaattisesti. Rekisteröi rekisterinpitäjäsi ja toteuta toimenpiteet.

toiminta HTTP-menetelmä
indeksi GET
Näytä GET
luo POST
Uusi GET
EDIT GET
päivitys PUT
tuhoa poista

meidän esimerkistä ProductsController saat seuraavan tuotoksen:

nimeäminen

joskus nimeät ohjaimesi yhden asian, mutta haluat resurssien url: n kuvastavan jotain aivan muuta. Tämä on helppo tehdä.

tuotteiden Uusi url-osoite#indeksi muuttuu.

lisäksi voit muuttaa resurssin oletustoimintojen nimiä käyttämällä PathNames – menetelmää. Tämä ei ole suositeltavaa, mutta haluamme antaa sinulle vaihtoehtoja.

muokattaessa {id} – parametria

oletuksena käytetään nimeä id resurssin id-parametrille reitin URL-kuvioissa. Esimerkiksi yllä olevien tuotteiden#Näytä toiminta toiminnoissa ja HTTP-menetelmät URL-kuviointi on /products/{id}.

joissakin skenaarioissa parametrille kannattaa käyttää eri nimeä. Ehkä haluat parametrin nimen vastaavan resurssin tunnistamiseen käytetyn ominaisuuden nimeä:

käyttäjille lisätty reitti#Näytä toiminto olisi tällöin URL-malli /users/{username}.

toimien valitseminen

joskus et välttämättä tarvitse kaikkia tarjoamiamme menetelmiä. Voit poistaa toimintoja käyttämällä follwing menetelmiä oikealla.

Pesimäresurssit

map.Resources<ProductsController>(products => { products.Resources<ReviewsController>()});

resurssit riippuvat joskus muista resursseista. Kun pesii resursseja, sinulla on yhdestä moneen suhde emoresurssin ja sen riippuvaisten resurssien välillä. Ajattele tuotetta, joka on reviews.To saavuttaa tämän voit rekisteröidä kaksi resurssia näin.

jäsen-ja Keräysreitit

käyttävät resurssien sisällä Member ja Collection menetelmiä, joilla lisätään keräykseen reittejä (ilman id-reittiparametria) tai jäsen (ID-reittiparametrilla). Karttatapoja ovat Get, Post, Put, Delete ja Head. Kun kyseessä on yksittäinen resurssi, voit käyttää ainoastaan Member – menetelmää.

Standardikartoitus

<!-- IN RAZOR VIEW --><a class="btn" href="@Url.Action("usingpath", "extras")">Path</a><a class="btn" href="@Url.Action("usingroute", "extras")">Route</a>

joskus konventiomme eivät vain toimi sinulle. Saatamme olla itsepäisiä, mutta emme hallitse rautaisella otteella.

kaksi muuta menetelmää on saatavilla, joten voit lisätä mukautettuja reittejä: polku on sekoitus perinteistä ASP.Net MVC reititys syntaksi meidän käyttöliittymä kääre. Reitti on hyvin perinteinen tapa lisätä oma reitti.

alueet

alueet hoidetaan Nimiavaruudella levollisessa reitityksessä. Yleensä kansioiden ja nimiavaruuksien välillä on korrelaatio, joten useimmille kehittäjille tämä ei ole suuri ero siihen, mitä he jo tekevät.

Aluemenetelmälle annettua ohjainta käytetään ryhmitettyjen ohjaimien nimiavaruuden määrittämiseen. ”Mappings” – merkkijonoa käytetään alueen nimen määrittämiseen yhdessä url-osan kanssa.

muista, että alue on ilmoitettava, kun luot URL-osoitteita. Jos haluat poistua alueelta, voit asettaa alueen tyhjäksi merkkijonoksi. Kaikki säännöt resursseineen ja resursseineen pätevät edelleen, kun käsitellään alueita.

View Engines

levollinen reititys tulee kahdella view-moottorilla: RestfulRoutingRazorViewEngine ja RestfulRoutingWebFormViewEngine. Katsotaanpa yhtä näistä näköalamoottoreista.

nämä katselumoottorit muuttavat tapaa, jolla ASP.Net MVC etsii näkymiä.

Format Result

tämä on ominaisuus, jonka avulla voit käyttää implisiittisiä formaattilaajennuksia resurssiin ja resursseihin. Tähän ominaisuuteen on kaksi ydinmenetelmää: respondo, WithFormatRoutes.

<system.webServer> <modules runAllManagedModulesForAllRequests="true" /></system.webServer>
namespace RestfulRouting.Documentation.Controllers{ public abstract class ApplicationController : Controller { protected ActionResult RespondTo(Action<FormatCollection> format) { return new FormatResult(format); } }}
// IN ROUTESET// enable format routesextras.WithFormatRoutes();

tarjoamme joukon tunnettuja tyyppejä kättelyssä, jotta käyttämällä sujuvaa käyttöliittymää hieman mukavampi, mutta tuemme mitä tahansa tiedostotunnistetta, jota voit ajatella. Voit luoda nämä muoto reittejä vain määrittää muodossa seuraavasti.

Awesome right?! Suosittelemme, että luet seuraavat osiot Quirks / Gotchas, jos aiot käyttää muotoreittejä.hänen on hyödyllistä, jos rakennat yhden sivun sovelluksia käyttää säästeliäästi ja ymmärtää, milloin on tarkoituksenmukaista erottaa toiminnallisuutta toiminnassasi.

Redirect Dead Links

on aikoja, jolloin teemme parempia url-ratkaisuja kuin muut. Haluamme mahdollisuuden muuttaa URL-osoitteita rikkomatta olemassa olevia URL-osoitteita. Tämä on tarpeen vain, kun hakemus menee elää. Tämä koskee enimmäkseen julkisia sivustoja, mutta voisi olla hyötyä intranet situtation.

ensimmäiseksi kannattaa ilmoittaa kaikki uudelleenohjatut reitit listasi viimeisiksi reiteiksi. Tämä johtuu siitä, että ne ovat vähiten tärkeitä. Osuma tulee vain, kun käytät vanhaa linkkiä. Sovelluksen ei pitäisi tuottaa näitä URL-osoitteita, ja jos se on sitten sinulla on ongelmia.

toiseksi, rekisteröinti näyttää Restfulroutingin vanhalta hyvältä syntaksilta, mutta sitä ei tarvitse peitellä minkään määritelmän sisällä. Haluaisin suositella, luoda RouteSet nimeltään DeadLinks tai ohjaa ja yhdistää sen lopussa master RouteSet.

lopuksi, ja tämä on tärkeää, rekisteröi Uudelleenohjautuva Suodatinattribte maailmanlaajuiseksi suodattimeksi.

kuten näet oikealle, asetat vain vanhan url: n ja annat arvot ratkaistavaksi uudelle url: lle. Käytämme peiton alla olevaa URL-osoitetta löytääksemme parhaan sopivan reitin.

Route Debugger

// IN ROUTESETmap.DebugRoute("routedebug");

levollinen reititys sisältää tehokkaan reitin debuggerin, jonka tarkoituksena on auttaa sinua ymmärtämään reittien kartoituksia. Voit ottaa reitin debuggerin käyttöön ja poistaa sen käytöstä puhtaasti lisäämällä seuraavan rivin Reittiohjelmaasi.

Quirks / Gotchas

tässä jaksossa yritetään eritellä joitakin omituisuuksia ASP.NET MVC ja rauhallinen reititys. Nämä voivat aiheuttaa ongelmia joskus ja on hyvä ymmärtää, miksi ja milloin ne voivat vaikuttaa hakemukseen.

Kestoreittiarvot

ASP.Net MVC yrittää aina olla avuksi. Avulias, vaikkakin hyvää tarkoittava, voi johtaa joskus outoon käytökseen. Suurin ongelma voidaan tallentaa reittiarvot olemassa olevasta pyynnöstä.

tämän omituisuuden ymmärtäminen voi auttaa sinua debugaamaan paljon ongelmia, ei vain levollisella reitityksellä, vaan ASP.NET MVC yleensä. Näet esimerkin oikealla.

Sekoituskartoitustasot

map.Resource<ProfileController>(profile => { // DOH! should be profile // not map! // EXCEPTION!!!! map.Resource<CreditCardController>()});

levollinen reititys on suunniteltu sujuvaksi ja sisäkkäiseksi. RouteSet: n luomisen aikana saatat vahingossa soittaa väärää parametria, mikä johtaa virheeseen, jota voi olla vaikea diagnosoida. Poikkeuksemme on hyödyllinen, mutta tämä on sen verran yleinen virhe, että päätimme dokumentoida sen.

nimiavaruudet ja Nimikiistat

joskus haluamme nimetä ohjaajat samoiksi, mutta saada ne eri nimiavaruuksiin. Tämä on tarkoituksenmukaista, kun rakennat hallinnollisen ja edessä osa sivuston. Muista vain asettaa nimiavaruudet asianmukaisesti, jotta reititys voi asentaa oikean ohjaimen.