0

ビュー内で次の url.action が定義された JavaScript ファイルがあります。

var Url = '@Url.Action("GetSomething", "SomeController", 
         new { 
                 area = "", repository = Model.Repository, 
                 multiSelect = Model.MultiSelect })';

私のJavaScriptでは、上記で定義されたUrlオブジェクトを使用してロードし、次のURLを取得します

/EmployeeRepository/GetTree?multiSelect=True/1

URLが次のルーティング構成に正しくマップされないため、これにより問題が発生します。

  routes.MapRoute("HierarchyMultiSelect", 
                    "{repository}/{action}/{id}/{multiSelect}", 
                     new { controller = "SomeController", 
                     id = UrlParameter.Optional, 
                     multiSelect = UrlParameter.Optional }, 
                     new { repository = @"\w*Repository$" }, namespaces);

URLが

/EmployeeRepository/GetTree/1/True

したがって、現在次のことを行っているJavaScriptから、URLを次の形式にする方法を知りたいと思いました。

 staffTree.load(url + "/" + id, function () {}

パラメータを使用してルートデータを使用するか、JavaScriptでURLをソートする方が良いでしょうか?

前もって感謝します

4

2 に答える 2

0

ルートにはプロパティ「ID」が必要です。2 つのオプション パラメーターを指定することはできません。2 番目のパラメーターには値を指定できますが、最初のパラメーターには指定できません。ID を指定するか、ID なしでルートを作成してください。

値「!!id!!」のような ID のプレースホルダーを入れることができます。必要に応じて Javascript を使用して置き換えます。を使用して特定のルートを強制することもできUrl.HtmlRoute("HierarchyMultiSelect")ますが、それでも ID をマージする必要があります。

于 2013-08-08T13:31:28.443 に答える
0

私が間違っているかもしれませんが、あなたの ActionResult はルーティングに設定されていません。私の考えではaction = "GetTree"、ルートにステートメントを追加する必要があります:

routes.MapRoute(
                name: "HierarchyMultiSelect", 
                url: "{repository}/{action}/{id}/{multiSelect}", 
                defaults: new { controller = "SomeController", 
                        action = "GetTree", 
                        id = UrlParameter.Optional, 
                        multiSelect = UrlParameter.Optional }, 
                new { repository = @"\w*Repository$" }, namespaces);
于 2013-08-08T12:52:42.490 に答える