2

MVC 4(または実際にはASP.NET用のMVCのいずれか)の初心者である私は、私が見ているものよりもURLヘルパーに多くのことを感じずにはいられません。

基本的に、URLのクエリ文字列を使用してコントローラーメソッドに属性を設定するチュートリアルを読みました。ただし、クエリ文字列は好きではなく、セクション化された「フォルダ」のようなスタイルを好みます。

これ以上の説明がない場合、これはサンプルURLです。

http://something.com/DataTypes/Search/searchString

このアプローチは、一言で検索するだけなので、実際にはかなり安全です。

DataTypesコントローラーで試しました

    [HttpGet]
    public ActionResult Search(String q)
    {
        ViewBag.ProvidedQuery = q;
        return View();
    }

そして他のいくつかの小さなバリエーション、今は文字列をビューに表示しようとしているだけですが、そこには何も表示されていないようです。

URLの3番目の文字列を属性に挿入する方法はありますか?そうでない場合、URLの文字列データを取得するためにどのURLヘルパークラスを使用する必要がありますか?URL全体を手動で解析する必要がある場合でも、URLの3番目の要素を文字列として取得する必要があります

非常にn00bの質問は確かですが、この簡単なガイドがどこかに見つからないか、Googleを正しく検索していません...

4

3 に答える 3

3

欠落しているのは、デフォルトルートパラメータ名が「id」であるということです。だからあなたはこれをしたい:

[HttpGet]
public ActionResult Search(String id)
{
    ViewBag.ProvidedQuery = id;
    return View();
}

変数名idを使用したくない場合は、次のようにルートを変更できます。

routes.MapRoute(
    name: "Search",
    url: "DataTypes/Search/{searchString}",
    defaults: new { controller = "DataTypes", action = "Search", 
         searchString = UrlParameter.Optional });

文字列をオプションにしたくない場合は、デフォルトオブジェクトから最後のフィールドを削除できます。

于 2012-09-27T02:21:35.593 に答える
1

RouteTable.Routes.GetRouteData(new HttpContextWrapper(httpContext))を使用してroutedataを取得できます

RouteValueDictionaryへの文字列URL

于 2012-09-27T02:14:50.063 に答える
1

Global.asax.csのルーティングを確認する必要があります。たとえば、あなたの場合、次のようにルートコレクションにルートを追加できます。

        routes.MapRoute("Search",
            "DataTypes/Search/{q}",
            new { controller = "DataTypes", action = "Search" }
        );

次に、qパラメーターがアクションに自動的にマップされます。デフォルトのコントローラマッピングは、おそらくそれを「id」にマッピングしています。

于 2012-09-27T02:16:58.050 に答える