3

MVC4 プロジェクトに SiteController クラスがあり、「サイト」URL は正常に機能していますが、「サイト」の直後に動的 URL 部分が必要です。次のような URL が必要です。

mysite.com/Site/{DYNAMICSTRING}/Users(または何でも)

{DYNAMICSTRING} はサブサイトの名前にすることができるため、コントローラーはそのサブサイトが実際にデータベースに存在するかどうかを確認する必要があります。

現在、クエリ文字列を使用していますが、クライアントが望んでいるものではありません。

どうやってやるの?

追加の詳細

私のルーティング:

    routes.MapRoute(
                "Subdomain",                                              // Route name
                "{controller}/{action}/{dynamicString}",                           // URL with parameters
                new { controller = "Site", action = "Subdomain" }  // Parameter defaults
            );

私のコントローラー:

    public ActionResult Subdomain(string dynamicString)
    {
        return View();
    }

次の場所に移動すると、dynamicString の値が null になります: /Site/Subdomain/SomeString

4

2 に答える 2

3

ルーティングを構成する必要があります。たとえば、Homecontrollerを使用している場合:

    public class HomeController:Controller
    {
        public ActionResult Subdomain(string dynamicString)
        {
            return View();
        }
    }

次に、そのようなルーティングを構成する必要があります

routes.MapRoute(
            "Subdomain",                                              // Route name
            "{controller}/{action}/{dynamicString}/anyOtherParams",                           // URL with parameters
            new { controller = "Home", action = "Subdomain", dynamicString = "" }  // Parameter defaults
        );
于 2013-02-26T09:15:31.183 に答える
1

次のように実行できます。

routes.MapRoute(
            name: "Default", // Route name
            url:"Site/{dynamicstring}", // URL with parameters
            defaults: new {controller = "Site", action = "Index" }   // Defaults
        );

このようにURL部分にパーツを追加し続けることができます

 url:"Site/{dynamicstring}/{anythingelse}" //  url:"Site/{dynamicstring}/{anythingelse}/{bla}/Test/{hello}/etc..."

または、次のようなすべてのルートをキャッチすることもできます:"

routes.MapRoute(
            name: "Default", // Route name
            url:"{*all}", // catch all
            defaults: new {controller = "Site", action = "Index" }   // Defaults
        );

/で分割することにより、コントローラーのインデックスアクションの他のすべての部分を取得します

カスタム ルートをデフォルトの前に置いてください。そうしないと、デフォルト ルートがそれを取得します。

コントローラーでは、次のようなものが得られます。

public ActionResult Index(string dynamicstring, string anythingelse)
    {

        return View();
    }

そして、次のような URL を渡すと:

http://www.mysite.com/Site/test.nl/jordy

動的文字列の値は「test.nl」になり、その他の値は「jordy」になります

于 2013-02-26T10:14:20.000 に答える