3

既存のASP.NETWebフォームCMSからASP.NETMVCへの移植を開始しており、最初から正しくルーティングを取得したいと考えています。

注:まったく同じURL構造を持つことは重要ではありません。

この答えは私が探しているものに近いと思いますが、誰かがそれを持っている場合は、いくつかの追加の入力が必要です。

現在のURL構造は次のようになります。

?Content = News / CurrentNews / This_is_a_news_article
?Content = Corporate / About_Us / Overview

などなど

オプションの言語パラメーターを追加し、MVCで同様の構造を維持したいと思います。だから次のようなもの:

News / CurrentNews / This-is-a-news-article
en / News / CurrentNews / This-is-a-news-article

edit / News / CurrentNews / This-is-a-news-article
edit / en / News / CurrentNews / This-is-a-news-article

または私は逆の方がいいですか?

News / CurrentNews / This-is-a-news-article / edit
en / News / CurrentNews / This-is-a-news-article / edit

この方法(最後にアクションを使用)では、私が読んだ他の質問からすべてのシナリオのルートが必要になると思います。

もう1つのポイントは、既存のURLがSEOやパンくず生成の場合と同じように行われることです。つまり、URLは現在のナビゲーションパスを示します。

URLに現在のページを表示し、データベースからパンくずを個別に作成することができます。

好き:

en /This-is-a-news-article

クラム付き

ホーム>ニュース>現在のニュース>これはニュース記事です

全体的な考えと解決策?最大限の柔軟性を得るために、カスタムルーティングクラスから始める必要がありますか?

4

1 に答える 1

1

特定のルーティングルールが誤って重複しないようにする必要があります。たとえば、言語を最初のタグとして配置している場合、名前に「en」が付いているニュースカテゴリがないことを確認します。これはばかげた例だと思いますが、あなたはその絵を理解していると思います。最も精度の低いルーティングルールを最後に配置するようにしてください。

個人的には、次のように構成します。

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

なぜあなたが尋ねるかもしれない[itemId]?より大きなウェブサイトをお持ちの場合、まったく同じ名前のニュース記事が2つある可能性があります。あなたのコードは、最初に返されたニュースアイテムだけを表示するように「たまたま」書かれているかもしれませんが、そうではないかもしれません。IDは常に一意であり、SEOの観点からは、IDを追加することは実際には重要ではありません(少なくとも私の経験では)。

[言語]を省略し、代わりにデフォルトを指定するルートを追加できます。

また、Scott Guthrieがこれについて少し前に素晴らしいブログ投稿を書いていますが、これは間違いなく読む価値があります。MVC3でも有効だと思います。アイデアが浮かぶかもしれません。

于 2010-09-06T15:00:55.910 に答える