I jqueryuiダイアログを開くためにjQueryのスクリプトの一部として、次のコード(ID値は、ハードコードされたテスト目的のためのものである)を有する:エスケープ文字
open: function (event, ui) {
$(this).load("@Url.Action("Edit", "Person",
new
{
id = Guid.Parse("28769371-7518-49db-a5ea-b9c62621a609"),
selectedPersonFor = Model.SelectedPersonFor,
selectedPersonForId = Model.SelectedPersonForId,
clientAccountId = Model.ClientAccountId
})");
},
私の問題点は、ダイアログが開いても、コントローラのアクションが決して当たらないということです。私は私のブラウザでソースを表示する場合は
生成される出力は次のようになります。
open: function (event, ui) {
$(this).load("/Person/Edit/28769371-7518-49db-a5ea-b9c62621a609?selectedPersonFor=ClientAccount&selectedPersonForId=2a2dd3b9-a73b-4afa-8237-5a4f37736f8a&clientAccountId=00000000-0000-0000-0000-000000000000");
},
私が発見したこと、私は私のスクリプトに上記のURIをハードコーディングし、非エスケープでエスケープアンパサンド(&)を交換する場合アンパサンド(&)私のコントローラのアクションがヒットします。
エスケープされたアンパサンドを取り除くために、スクリプト内のreplaceメソッドの呼び出しを追加しようとしましたが、これは役に立ちません。 を呼び出すために生成された同じページ内の他のURIを見ると、というスクリプト内ではなく、その中にアンパサンドがエスケープされていることに気付きます。
ブラウザからコントローラアクションの呼び出しをスクリプトから処理する方法が、スクリプトの外側からどのように実行されているか、エスケープされたアンパサンドに関連するすべての点で違いがあるようです。
この問題を解決する方法を教えてもらえますか?
さらに情報:私も次のようにロード機能にクエリパラメータを渡して試してみました
:私はこの方法でそれを行う際に
open: function (event, ui) {
$(this).load("@Url.Action("Edit", "Person")",
{
id: @Guid.Parse("28769371-7518-49db-a5ea-b9c62621a609"),
selectedPersonFor: Model.SelectedPersonFor,
selectedPersonForId: Model.SelectedPersonForId,
clientAccountId: Model.ClientAccountId
});
},
は、しかし、私のダイアログはしても開きません。
編集:私は、次の提供のルートを表示するように要求に応じて
(うまくいけば、これは要求されていたものです):
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
私はちょうど私のASPで提供されるデフォルトルートを使用しています.net mvc3 project。
あなたのルートを表示すると簡単に回答できます –