我有下面的代碼作爲一個jQuery腳本打開一個jQueryUI的對話的一部分(id的值是硬編碼用於測試目的):轉義字符通過調用生成URL.Action與jQuery腳本
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以上到我的腳本,並用非轉義替換轉義號(&) &符號(&),然後我的控制器操作被擊中。
我已經嘗試在我的腳本中添加對替換方法的調用以擺脫轉義符號,但這沒有幫助。當我查看同一頁面中的其他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項目。
如果你顯示你的路線,它會更容易回答 – 2012-01-07 08:23:51