1

私は次のエンティティを持っています:

会社->ブログ->記事->コメント

各企業には、記事やコメントが掲載された1つまたは複数のブログがあります。

URLは次のように作成されます。

{コントローラー}/{アクション}/{id}

ブログ/編集/1

私はSEOの目的で、会社をその前に置きたいと思っています。それはより論理的です。

SampleCo/ブログ/編集

SampleCoには、次のようなページを含むWebサイトもあります。

SampleCo / myPage.vbhtml

これについて行くための最良の方法は何ですか?ご協力ありがとうございました。

注:マルチテナンシーに関するリンクを見たことがありますが、それが必要になるとは思いません。すべてが外部キー(会社からブログ、ブログから記事、記事からコメント)であるため、個別のインスタンスは必要ありません。

4

2 に答える 2

2

global.asax.csでは、デフォルトルートを次のように置き換えることができます。

        routes.MapRoute(
            "Default", // Route name
            "{company}/{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

唯一の問題は、これがすべてのリクエストに当てはまるということです。したがって、サイトの他の部分にデフォルトルートを使用/必要とする場合は、別の解決策を見つける必要があります。

コントローラには次のものがあります。

public class BlogController : Controller {
    public ActionResult Edit(String company, int id) {
    }
}
于 2012-07-27T14:52:20.400 に答える
1

あなたがあなたに頭痛を与えるデフォルトルートを台無しにしたくないと私を信じてください、あなたはデフォルトをそのままにして、次のようなセカンダリルートを作成することができます:

 routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

    routes.MapRoute(
                "SEORoute1", // Route name
                "{company}/{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

また、ルートを使用する必要がある場合は、次のヘルパーを使用してください。

@Html.RouteLink("LinkText","SEORoute1",new { action = "Index", controller = "Home", company = item.Name, id = item.Code })
于 2012-07-27T15:15:16.317 に答える