オプションの開始パラメーターを使用したASP.NET MVCルーティング
-
30-09-2019 - |
質問
既存のASP.NET WebフォームCMSのポートをASP.NET MVCに開始し、最初からルーティングを取得したいと考えています。
注:まったく同じURL構造を持つことは重要ではありません。
おもう この答え 私が探しているものに近いですが、誰かがそれを持っているなら、いくつかの追加の入力が欲しいです。
現在のURL構造は次のようなものです。
?content = news/currentNews/this_is_a_news_article
?content = corporate/about_us/概要
など
オプションの言語パラメーターを追加し、MVCに同様の構造を保持したいと思います。だから:
News/CurrentNews/this-is-a-news-article
en/news/currentnews/this-is-a-news-article編集/news/currentNews/this-is-a-news-article
編集/en/news/currentnews/this-is-a-news-article
それとも私は逆の方が良いですか?
News/CurrentNews/this-is-a-news-article/編集
en/news/currentnews/this-is-a-news-article/edit
このように(終了時のアクションを使用して)私が読んだ他の質問からのすべてのシナリオのルートを再Quertすると思います。
もう1つの点は、既存のURLがSEOおよびパンパン粉の生成のためにそのように行われていることです。つまり、URLは現在のナビゲーションパスを示しています。
URLに現在のページを表示し、データベースからパン粉を別々に構築することができました。
好き:
en/this-is-a-news-article
パン粉で
ホーム>ニュース>現在のニュース>これはニュース記事です
全体的な考えと解決策?最大限の柔軟性を得るために、カスタムルーティングクラスから始めるだけですか?
解決
特定のルーティングルールの偶発的な重複がないことを確認する必要があります。たとえば、最初のタグとして言語を置いていると言って、名前の「en」があるニュースカテゴリがないことを確認してください。私はこれが愚かな例だと知っていますが、あなたは写真を撮ると思います。最小の正確なルーティングルールを最後に配置してください。
個人的に私はこのようにそれを構成します:
[language]/[category]/[subcategory]/[itemtitle]/[itemid]
なぜ[itemid]尋ねることができるのですか?より大きなウェブサイトがある場合、まったく同じ名前の2つのニュース記事があることがあります。あなたのコードは、返された最初のNewsitemを示すためだけに書かれた「たまたま」と書かれているかもしれませんが、そうではないかもしれません。 IDは常に一意であり、IDを追加するSEOの用語では、実際には重要ではありません(少なくとも私の経験では)。
言語]が除外され、代わりにデフォルトが提供されるルートを追加できます。
また、スコット・ガスリーは素敵なものを書いています blogpost これについては、それは間違いなく読む価値がありますが、MVC 3にとってはまだ有効だと思います。それはあなたにいくつかのアイデアを与えるかもしれません!