좀 복잡해졌지만 왜 작동하지 않는지 알 수 없습니다. 내 Index.cshtml에 JSTree가 있습니다. 노드를 선택하면 Ajax 호출을 부분 뷰를 반환하는MVC 4.0에서 RedirectToAction은 PartialView를 Partial로 렌더링하지 않으며 전체 페이지를 전송합니다.
public async Task<ActionResult> GetEBooksItems(string id)
으로 호출합니다. 이것은 완벽하게 작동합니다.
이제 트리 검색 외에도 검색 범위를 좁히기위한 몇 가지 기준을 추가하는 형식이 있습니다. Ajax.BeginForm을 사용하여 데이터를 컨트롤러에 다시 게시합니다.
public async Task<ActionResult> GetEBooksCustom(GenericSearchViewModel filter)
{
vm = filter;
//Session["GenreNodeId"] = id;
Session["SearchCondition"] = (string.IsNullOrEmpty(vm.Condition) != true) ? vm.Condition : "All";
Session["MaximumPrice"] = (string.IsNullOrEmpty(vm.MaxPrice) != true) ? vm.MaxPrice : "999999";
Session["MinimumPrice"] = (string.IsNullOrEmpty(vm.MinPrice) != true) ? vm.MinPrice : "0";
Session["SearchIndex"] = (string.IsNullOrEmpty(vm.SearchIndex) != true) ? vm.SearchIndex : "KindleStore";
Session["SortOrder"] = (string.IsNullOrEmpty(vm.SortOrder) != true) ? vm.SortOrder : "price";
Session["KeyWords"] = (string.IsNullOrEmpty(vm.Keywords) != true) ? vm.Keywords : "";
Session["Title"] = (string.IsNullOrEmpty(vm.Title) != true) ? vm.Title : "";
Session["Author"] = (string.IsNullOrEmpty(vm.Author) != true) ? vm.Author : "";
return RedirectToAction("GetEBooksItems", new { id = vm.CategoryNodeId });
}
이 메서드는 첫 번째 호출을 RedirectToAction으로 호출합니다.
제가 생각할 수있는 모든 것을 시도해 왔으며, 첫 번째 방법과 같이 부분보기 대신 항상 결과를 전체 페이지로 가져 왔습니다.
GetEBooksCustom에 대한 호출이 Ajax 호출로 "보이지"않는 것처럼 보입니다. 무엇이 놓칠까요? 도와 주셔서 감사합니다. Bernard.
** * *편집 6 시간 후에* ** * ** * ** *
사이에서 내가 무슨 짓 RedirectToAction을 사용하는 대신 PartialView를 직접 반환 할 수 있도록 "GetEBooksItems"에서 기능을 추출하는 것이 좋습니다. 디버거에서는 모든 것이 완벽하게 보입니다. 서버에서 200 응답을 볼 수 있지만 전체 페이지 디스플레이가 표시되고 url에는 컨트롤러 메서드가 표시되지만 Ajax 호출의 경우에는 그렇지 않습니다.
사실 나는 기본적으로 다른 곳의 동일한 양식을 사용하여 예상대로 작동합니다. 다른 것이 무엇인지 알 수 없습니까 ???
언제나처럼, 당신의 도움과 제안에 감사드립니다. Bernard
네, 그 점에 대해 조금 더 생각한 후에 생각했습니다. "vm"의 주요 부분을 반환하는 메서드가 필요하므로 RedirectTo 동작 대신 partialView와 함께 반환 할 수 있습니다. 고맙습니다! 때로는 묻고 두 번째 눈 켤레 만 있으면 대답을 얻을 수 있습니다. :-) – BernardG