簡體   English   中英

帶有可選啟動參數的asp.net mvc路由

[英]asp.net mvc routing with optional starting parameter

我正在啟動現有ASP.NET Web Forms CMS到ASP.NET MVC的端口,並希望從一開始就獲得路由。

注意:擁有完全相同的URL結構並不重要。

我認為這個答案接近我正在尋找的東西,但是如果有人有這個答案 ,我想要一些額外的輸入。

當前的URL結構如下:

?內容=新聞/ CurrentNews / This_is_a_news_article
?內容=公司/ About_Us /概述

等等

我想添加一個可選的語言參數,並在MVC中保持類似的結構。 所以類似於:

新聞/ CurrentNews /這 - 是 - 一 - 新聞文章
EN /新聞/ CurrentNews /這 - 是 - 一 - 新聞文章

編輯/新聞/ CurrentNews /這 - 是 - 一 - 新聞文章
編輯/ EN /新聞/ CurrentNews /這 - 是 - 一 - 新聞文章

或者我反過來更好?

新聞/ CurrentNews /這 - 是 - 一 - 新聞 - 文/編輯
EN /新聞/ CurrentNews /這 - 是 - 一 - 新聞 - 文/編輯

我認為這種方式(結束時采取行動)要求我從其他問題中找到解決方案。

另一點是現有的URL就像SEO和面包屑生成一樣。 即URL顯示當前導航路徑。

我可以在URL中顯示當前頁面,並分別從數據庫中構建面包屑。

喜歡:

EN /這 - 是 - 一 - 新聞文章

面包屑

首頁>新聞>當前新聞>這是一篇新聞文章

總體思路和解決方案? 我應該從自定義路由類開始,以獲得最大的靈活性嗎?

您必須確保某些路由規則不會意外重疊。 例如,假設您將語言作為第一個標記,請確保沒有名稱為“en”的新聞類別。 我知道這是一個愚蠢的例子,但我認為你得到的照片。 確保最后使用最准確的路由規則。

就個人而言,我會像這樣構造它:

[language]/[category]/[subcategory]/[itemtitle]/[itemid]

你可能會問為什么[itemId]? 如果您有一個更大的網站,可能會發生2篇具有完全相同名稱的新聞文章。 您的代碼可能“恰巧被”寫入僅顯示返回的第一個newsitem,但它也可能不是。 ID始終是唯一的,在SEO方面,添加ID,實際上並不重要(至少在我的經驗中)。

您可以添加省略[語言]的路由,而是提供默認值。

另外,Scott Guthrie剛才寫了一篇很好的博客文章 ,這絕對值得一讀,我認為它對MVC 3仍然有效。它可能只是給你一些想法!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM