0

私のwebappには、次のようなリンクがいくつかあります。

localhost:12345/?something=1
localhost:12345/?something=2
localhost:12345/?something=3
localhost:12345/?something=4

末尾の各数字は、関連する情報を表示するためにコントローラーに渡す必要がある ID です。

routes.MapRoute自分のページに新しいページを作成する必要があることはわかっていglobal.asaxますが、その方法がよくわかりません。私はこれを試しました:

routes.MapRoute(
    "Id", // Route name
    "{controller}/{action}/{*Id}", // URL with parameters
    new { controller = "Home", action = "Id", Id = "" } // Parameter defaults
);

- -編集 - -

次のようにして、各個人の好みを表示することに成功するだけです。

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

これは機能しますが、これは 1 つの ID (具体的には 1) に対してのみ機能します。これについてどうすればよいかよくわかりませんが、必要なものは次のとおりです。

localhost:12345/?something=1

ID 1 の情報を表示するには、

localhost:12345/?something=2

ID 2 の情報を表示するには、

localhost:12345/?something=3

ID 3 の情報を表示します。

何百ものIDが存在するので、何かをハードコーディングするのは便利なオプションではありません. 私はこれまで運がありませんでした。どんな助けでも大歓迎です!ありがとう!

4

2 に答える 2

0

たとえば、HomeController に次の Action がある場合:

public ActionResult SomeAction(int Id)
    {
        return View()
    }

次のいずれかのルートを使用できます。

//* For Id = 3 this will return path "Home/SomeAction/3" 
routes.MapRoute(
                name: "First",
                url: "{controller}/{action}/{Id}",
                defaults: new { controller = "Home", action = "SomeAction", Id= UrlParameter.Optional}
            );


//* For Id = 3 this will return path "SomeAction/3" 
routes.MapRoute(
                name: "First",
                url: "{action}/{Id}",
                defaults: new { controller = "Home", action = "SomeAction", Id= UrlParameter.Optional}
            );

//* For Id = 3 this will return path "Home/SomeAction(3)" 
routes.MapRoute(
                name: "First",
                url: "{controller}/{action}({Id})",
                defaults: new { controller = "Home", action = "SomeAction", Id= UrlParameter.Optional}
            );


//* For Id = 3 this will return path "LadyGaga/SomeAction/3" 
routes.MapRoute(
                name: "First",
                url: "LadyGaga/{action}/{Id}",
                defaults: new { controller = "Home", action = "SomeAction", Id= UrlParameter.Optional}
            );
于 2013-08-08T20:43:57.887 に答える
0
        routes.MapRouteWithName(
            "RootName",
            "{id}",
            new { controller = "Home", action = "Index", id = 1 });

これにより、この localhost/1 のようなリンクが生成されます。このようなリンクが必要な場合は、 localhost/?id= 1 次に:

        routes.MapRouteWithName(
            "RootName",
            String.Empty,
            new { controller = "Home", action = "Index"});


public ActionResult Index(int id)
    {
        //do something with id, make query to database whatever

        // u usually have model class so you would fill model with your data
        var model = new YourModel();
        //...
        return View("Index", model);
    }
于 2013-08-05T13:49:38.373 に答える