質問

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

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

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

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

このルートをマッピングすることにより、任意のコントローラーの任意のアクションにマッピングできますが、アクションに何かを渡す場合は、メソッドパラメーターを<!> quot; id <!> quot;と呼ぶ必要があります。可能であれば、これを回避する方法を見つけたいので、アクションで別のパラメーター名を使用するために常にルートを指定する必要はありません。

アイデアはありますか、またはこれを回避する方法を見つけましたか?

役に立ちましたか?

解決

好きなようにルートを構築できます

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

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

他のヒント

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

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

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

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

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

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

~/mycontroller/myaction/?foobar=123

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

public ActionResult MyAction(int? foobar)

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

引き続きFromUri属性を使用することはできませんが、次のようにRoute属性を使用できます

[Route("~/Policy/PriorAddressDelete/{sequence}")]
public ActionResult PriorAddressDelete(int sequence)
{
  Policy.RemoveScheduledPriorAddressItem(sequence);
  return RedirectToAction("Information", new { id = Policy.Id });
}

技術的にはこれにより新しいルートが追加されますが、少なくともrouteconfigが散らかることはありません。使用する場所によってルート定義を正しく設定します。これは私が好きなことです(ハンティングを減らします)。

属性ルーティングを使用するには、これがrouteconfigファイルにある必要があることを忘れないでください。上記定義済みのルート:

routes.MapMvcAttributeRoutes();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top