0

さまざまな数のパラメーターを取るさまざまなアクションにアクセスしていますが、カスタム ルーティングを適用しても、同じアクションへの呼び出しは常に行われます。コントローラーデータ-----

[System.Web.Mvc.ActionName("Details1")]
    public string Detail1(string Name)
    {
        return null;
    }

    [System.Web.Mvc.ActionName("Details2")]
    public string Detail2(string Name, string secondName)
    {
        return null;
    }

カスタムルート

context.MapRoute(
            "M_default",
            "controllername/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional }

        );

        context.MapRoute(
            "name1",
            "controllername/{Name}",
            new { controller = "controllername", action = "Details1" }

        );

        context.MapRoute(
            "name2",
            "controllername/{Name}/{secondName}",
            new { controller = "controllername", action = "Details2" }

        );

最初のルートはデフォルト、2 番目のルートは details1、3 番目のルートは details2 です。

そして、これらの URL が Details1 呼び出しの URL であるビュー $.post から呼び出します。

"/api/controllername/?Name="+somename+"",

Details2 呼び出し用 URL

"/api/controllername/?Name="+somename+"&secondName="+othername,

こちらから参考にさせていただきました

可能な解決策は何ですか。任意の提案、助けをいただければ幸いです。

4

2 に答える 2

0

デフォルト ルートを最後に配置してみてください。すべてを捉えていると思います。

于 2013-03-26T14:21:06.933 に答える
0

私の理解が正しければ、フレームワークがルールを解析する方法に問題があります。フレームワークはルール リストの一番上から始まり、1 つの条件が一致するまで下に行くことに注意してください。URLのシーケンスを逆にすると、問題が解決するはずです

このルートデバッガーを使用して、すべてのルートが正しく機能しているかどうかを確認することもできます

更新: このようなルートを作成することを意味します。そして、「api」の部分が欠けていることがわかりました。ルート デバッガーを使用して、すべてが正しいことを確認します。

    context.MapRoute(
        "name2",
        "api/controllername/{Name}/{secondName}",
        new { controller = "controllername", action = "Details2" }

    );

    context.MapRoute(
        "name1",
        "api/controllername/{Name}",
        new { controller = "controllername", action = "Details1" }

    );

    context.MapRoute(
        "M_default",
        "controllername/{action}/{id}",
        new { action = "Index", id = UrlParameter.Optional }

    );

それは正しく処理する必要があります

  /api/controllername/somename/someothername

 /api/controllername/somename
于 2013-03-26T14:25:33.140 に答える