1

Global.asax で次のルートが定義されています。

routes.MapRoute(
                "IncidentActionWithId", // Route name
                "Incidents/{companyId}/{action}/{id}", // URL with parameters
                new { controller = "Incidents" } // Parameter defaults
            );

次のような特別なリクエストがあります。

/Incidents/SuperCompany/SearchPeople/Ko

この場合、アクションは実際にSearchPeopleアクションに、comapnyIdこのアクションのパラメーターにマップする必要がありますが、アクションが SearchPeople の場合にのみ、 をアクションKoの id パラメーターにマップするのではなく、 にマップする必要がありますsearchTerm

私の行動宣言は次のとおりです。

[HttpGet]
public ActionResult SearchPeople(string companyId, string searchTerm)

アクションメソッドのパラメーターにKoマップするにはどうすればよいですか?searchTerm

4

1 に答える 1

1

2 つのルートを定義できます。1 つは を使用しid、もう 1 つは id が数値であると想定されている場合 (または regex searchTerm constraints指定できます) を使用し、searchTerm に対して異なるパターンを使用できます。

制約を定義する方法については、こちらを参照してください。

例:

routes.MapRoute(
            "IncidentActionWithId", // Route name
            "Incidents/{companyId}/{action}/{id}", // URL with parameters
            new { controller = "Incidents" }, // Parameter defaults
            new {id = @"\d+"} // numeric only
        );

routes.MapRoute(
            "IncidentActionWithId", // Route name
            "Incidents/{companyId}/{action}/{searchterm}", // URL with parameters
            new { controller = "Incidents" } 
        );

ノート

最初に制約のあるものを定義してください。

于 2012-02-08T14:26:03.997 に答える