11

C# を使用した MVC でのルーティングに関する情報を探しています。私は現在、MVC でのルーティングの基本をよく知っていますが、探しているものを見つけるのはやや困難です。

事実上、私が見つけたいのは、単一のパラメーターを取る単一のルートを定義する方法です。

オンラインで見つけた一般的な例はすべて、例に基づいています

routes.MapRoute(
    "Default",
    "{controller}.mvc/{action}/{id}"
    new { controller = "Default", action="Index", id=""});

By mapping this route, you can map to any action in any controller, but if you want to pass anything into the action, the method parameter must be called "id". I want to find a way around this if it's possible, so that I don't have to constantly specify routes just to use a different parameter name in my actions.

Has anyone any ideas, or found a way around this?

4

5 に答える 5

7

別のパラメーター名持ち、同じルーティング変数を保持する場合は、次のように FromUri 属性を使用します。

public ActionResult MyView([FromUri(Name = "id")] string parameterThatMapsToId)
{
   // do stuff
}

ルートでは、必要なのは次のとおりです。

routes.MapRoute(
  "Default",
  "{controller}.mvc/{action}/{id}"
  new { controller = "Default", action="Index", id=""});
于 2013-03-13T18:50:21.097 に答える
5

あなたが求めていることを正確に行うことができるとは思いません。MVC がアクションを呼び出すと、ルート内のパラメーター、要求パラメーター、およびクエリ文字列が検索されます。常にパラメーター名と一致するように見えます。

おそらく、古き良きクエリ文字列がニーズを満たすでしょう。

~/mycontroller/myaction/?foobar=123

このアクションに 123 を渡します。

public ActionResult MyAction(int? foobar)
于 2008-12-05T21:45:12.130 に答える
3

私はこれが何世紀も前であることを知っていますが、それでも誰かを助けることを願っています。私は前に同じ質問をしました。これがあなたが探しているものだと思います。私の質問投稿から引用された回答:「{* pathInfo}ビットはスラッグと呼ばれます。これは基本的に「このポイント以降はすべてpathInfoというパラメータに詰め込まれます」というワイルドカードです。したがって、「{resource}.axd/」がある場合{* pathInfo} "と次のようなURL:http://blah/foo.axd/foo/bar/baz/bing次に2つのパラメーターが作成されます。1つはfooを含むresourceと呼ばれ、もう1つはfoo / bar / baz/bingを含むpathInfoと呼ばれます。"

于 2012-06-16T11:19:24.750 に答える
0

あなたが好きなようにルートを構築することができます

routes.MapRoute(
    "Default",
    "{controller}.mvc/{action}/{param1}/{param2}/{param3}"
    new { controller = "Default", action="Index", param1="", param2="", param3=""});

また、この投稿を見てください、コメントセクションにすべての種類のサンプルが含まれています

于 2008-12-05T12:35:19.247 に答える