1

この時点で、検索条件として 5 つのオプション パラメータを受け入れる検索アクション メソッドがあります。私のホームページには、検索アクション メソッドに GET 要求を送信するクイック検索ボタンがあります。すべて正常に動作していますが、URL は標準のクエリ文字列構文 (?x=x&y=y) を使用して生成されています。

フレンドリーな URL を公開したいのですが、ルーティング システムを使用して可能な唯一の方法は、すべてのパラメーターがオプションであるため、可能なすべての順列を追加することです。これはあまりエレガントに聞こえません。

それで、私が取ることができる他のルートはありますか(しゃれは意図されていません:))?Url 書き換えモジュールの可能性はありますか?

どんな助けでも大歓迎です。

4

2 に答える 2

0

次のような URL でよければ、ルートを設定できますhttp://mysite.com/search/{term-1}/{term-n}/{term-n+1}

routes.MapRoute(
    name: "SearchRoute",
    url: "search/{*terms}",
    defaults: new { controller = "MySearchController", action = "MySearchAction" }
);

アクションでは、/すべての検索用語で区切られる文字列を取り込みます。(URL はあまり意味がないかもしれませんが、使用できるものです。)

public class SearchController : Controller
{
    public ActionResult SearchAction (string terms)
    {
        foreach (var term in terms.Split ('/'))
        {
            // Do something
        }
    }
}
于 2012-10-29T21:03:18.530 に答える
0

オプション 1 : クエリ文字列を使用します。検索ページのわかりやすい URL ほど素晴らしいものはありません。

/search?q=url+routing

オプション 2 : 「わかりやすい」URL の一部として最大 1 つのオプション パラメータを許可します。追加のパラメーターは、クエリ文字列で渡す必要があります。例えば:

/search/query/url+routing (1 parameter)
/search/query/url+routing?tagged=asp.net (2 parameters)
/search/query/url+routing?tagged=asp.net&sort=date (3 parameters)
于 2012-10-29T20:51:31.727 に答える