asp.net mvc di routing con il parametro di partenza optional
-
30-09-2019 - |
Domanda
sto iniziando una porta di un ASP.NET Web Forms esistente CMS per ASP.NET MVC e vuole ottenere il giusto instradamento dall'inizio.
. Nota: non è importante avere la stessa identica struttura di URL
questa risposta è vicino a quello che sto cercando ma vorrei qualche ingresso aggiuntivo qualcuno dovrebbe avere.
L'attuale struzione URL è simile a:
? Content = News / CurrentNews / This_is_a_news_article
? Contenuto = Corporate / about_us / Panoramica
ecc ecc
Vorrei aggiungere una lingua paramater opzionale e mantenere una struttura simile a MVC. Quindi, qualcosa di simile a:
Notizie / CurrentNews / Questo-is-a-news-articolo
it / news / CurrentNews / Questo-is-a-news-articolomodifica / News / CurrentNews / Questo-is-a-news-articolo
Modifica / it / news / CurrentNews / Questo-is-a-news-article
o sono meglio con il rovescio?
Notizie / CurrentNews / Questo-is-a-news-articolo / modificare
it / news / CurrentNews / Questo-is-a-news-articolo / modifica
Credo che in questo modo (con l'azione sul finale) requries un percorso per ogni scenario da altre questioni che ho letto.
L'altro punto è che gli URL esistenti sono fatto così per SEO e la generazione briciola di pane. vale a dire gli spettacoli URL del percorso di navigazione corrente.
ho potuto solo mostrare la pagina corrente nella URL e crea il pangrattato dal database separatamente.
Come:
it / this-is-a-news-article
con mollica
Home> News> Attualità> Questo è un articolo
In generale i pensieri e le soluzioni? Devo solo iniziare con un costume di routing di classe per la massima flessibilità?
Soluzione
È necessario fare in modo che non ci sarà alcuna sovrapposizione accidentale di alcune regole di routing. Per esempio dire che si sta mettendo la lingua come il primo tag, assicurarsi che non ci saranno notizie-categorie che hanno 'it' per un nome. So che questo è un esempio stupido, ma credo che si ottiene l'immagine. Assicuratevi di mettere il routing più accurata governa scorso.
Personalmente mi sento di strutturare in questo modo:
[language]/[category]/[subcategory]/[itemtitle]/[itemid]
Perché il [itemId] si può chiedere? Se si dispone di un sito web più grande, potrebbe accadere che si dispone di 2 articoli con lo stesso nome. Il tuo codice può "solo capita di essere" scritto per mostrare solo il primo NewsItem restituito, ma altrettanto bene non può essere. Un ID è sempre unico e in termini di SEO, aggiungendo l'ID, in realtà non importa (nella mia esperienza almeno).
È possibile aggiungere un percorso dove [lingua] è lasciato fuori e un default è previsto invece.
Inoltre, Scott Guthrie ha scritto un bel blogpost su questo qualche tempo fa che è sicuramente la pena di leggere, penso che sia ancora valida per MVC 3. può solo dare alcune idee!