3

私は次のカスタムルートを持っています

routes.MapRoute("custom", "Groups/{groupname}/{action}/{id}", new { controller = "Groups", action = "Index", id = UrlParameter.Optional });

このカスタムルートは、次のURLスキーマを実現するためのものです

  • Groups / pokerclub /members/-ポーカークラブグループのすべてのメンバーを一覧表示します。
  • Groups / pokerclub / members/bob-bobのメンバーの詳細を一覧表示します。

次のことを試しましたが、うまくいきません。選択するアクションのasp.netmvcを混乱させます。

public ActionResult Members(string groupName, string id)
    {
        return View();
    }

    public ActionResult Members(string groupName)
    {
        return View();
    }

私が考えることができる2つの可能な解決策があります:

  • 別のアクション名を使用してください。例:メンバーリストアクションとメンバーアクション。
  • 単純なifステートメントを使用してビューでこれを処理します。

私は自分のURLスキームを維持したいと思っています。したがって、私の元の質問によると、1つのアクションに2つの異なるビューを関連付けるにはどうすればよいですか?ありがとう。

RWendi

4

3 に答える 3

3

アクションは1つだけですが、そのアクション内で必要なロジックを実行でき、名前でビューを呼び出すことができます。

return View("MyView");

あなたの例では、idフィールドがnullの場合、単に別のビューを返します。

于 2012-08-22T01:40:11.850 に答える
2

それが言うところreturn View(); それはパラメータを取り、あなたはそれをあなたが望むどんなビューでも使うようにさせることができます

return View("Members", model);
于 2012-08-22T01:40:19.257 に答える
0

さまざまな方法を使用できます。

[HttpGet]
public ActionResult Members(string groupName, string id)
{
    return View();
}

[HttpPost]
public ActionResult Members(string groupName)
{
    return View();
}
于 2012-08-22T06:00:13.423 に答える