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 페이지 내에서 다른 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 프로젝트.
경로를 표시하면 답변하기가 더 쉬울 것입니다. –