2009-12-03 2 views
0

나는 ASP.NET MVC 페이지를 가지고 있으며, 페이지 내에 약간의 AJAX 호출을 할 것이다.단일 페이지 요청에서 살아있는 속성

Controller의 값은 페이지가 여전히 존재하는 한 (AJAX 호출 중에도) 지속되며 다른 페이지 요청으로 전환하면 파괴되는 속성은 무엇입니까?

Controller.Session 우리 모두가 알고 있듯이 키와 값은 항상 살아 있고 액세스 할 수 있습니다. Controller.Request은 페이지가 구성 될 때 또는 AJAX 호출이 수행 될 때 살아 있습니다. Request 변수는 정상 페이지 호출에서 계속되는 AJAX 호출로 동일 페이지에서 지속되지 않습니다.

아이디어가 있으십니까? 당신이 AJAX 호출을 수행 할 때 그들이 존재하지 않습니다 그래서 만약 원래의 페이지가 요청 될 때 당신이 Request 특성에서 찾을

답변

1

가 한 페이지가 페이지가 진정으로 "가"이

여전히 결코 없기 때문에 지속 수행 할 작업에 대한 유일하고 진정한 옵션입니다. ASP.NET MVC에는 페이지 개념이 전혀 없습니다. 몇 가지 데이터와 컨트롤 상태를 유지할 수있는 기능을 갖춘 여러 요청을 통해 늘어나는 수명을 가진 인터페이스 엔티티 개념의 페이지. 모든 데이터를 유지할 능력이없는 단일 순간에만 존재하는보기가 있습니다.

요청이 있습니다. 당신이 가지고있는 페이지를 요청했습니다. 서버가 귀하에게 그것을 돌려 주었고 즉시 잊어 버렸습니다. Ajax 호출은 완전히 새로운 요청입니다. 서버는 Ajax 요청인지 여부조차 모릅니다. 이를 위해 모든 요청은 동일하거나, Get, Post 또는 기타입니다.

TempData 컬렉션을 사용할 수 있습니다. 그러면 두 번의 결과 사이에 데이터가 지속됩니다.

다른 대안은 세션 컬렉션입니다. 그것은 세션의 많은 요청 사이에 데이터를 유지합니다.

+0

나는 당신이 말하고자하는 바를 알고 있지만, 기본 ASP.NET MVC보기가 System.Web.UI.Page에서 실제로 상속된다는 사실을 깨닫는 것이 중요합니다. 그래서 MVC가 페이지의 개념을 전혀 가지고 있지 않다는 것은 다소 오도하는 것입니다. – LorenVS

0

값들이 존재하더라도, URL 또는 POST 본문에서 하나 가져온, 그들은 어떤 것 없다 더 이상 사용할 수 없습니다. 서로 다른 요청에서 사용할 수있는 유일한 속성은 SessionTempData (두 요청 사이에 값을 유지하기 위해 세션을 사용함)입니다.

HttpContext.Current.Application :

1

AJAX 요청을 염두에두고, 여기에 다양한 서버 컬렉션에 대한 간단한 개요입니다 유지, 서버에 만들어진 완전히 별도의 HTTP 요청이있는 응용 프로그램 수준의 캐시 컬렉션, 모든에서 동일 웹 요청에 관계없이의 웹 요청이

HttpContext.Current.Cache 어디에서 왔는지 :,,에 관계없이 웹 요청이

어디에서 왔는지의 모든 웹 요청에서 동일한 캐시 수집

HttpContext.Current.Request : 요청 컬렉션, 쿼리 문자열을 포함 매개 변수, 게시 된 값 및 제출 된 쿠키. 이것은 모든 HTTP 요청에 따라 다르므로 초기 요청과 후속 AJAX 요청간에 달라집니다.

HttpContext.Current.Items : 요청이 완료되고 원래의 요청 사이에 다시 설정되고 AJAX는

HttpContext.Current.Session 요청 후 그래서 하나의 웹 요청에 사용하고, 구성 요소 간의 데이터를 저장하는 컬렉션 삭제 : 특정에 묶여 브라우저 세션 (기본적으로 쿠키 사용)은 서버에 액세스하는 개별 사용자마다 동일합니다. 이것은 당신이

관련 문제