2011-04-15 3 views
0

MVC 3에서 스파크 뷰 엔진을 사용합니다. 모든 페이지, 즉 데이터베이스 기반의 사용자 로그인 정보에 액세스해야하는 데이터가 있습니다. 그래서 사용자가 로그인 할 때 데이터를 수집하고이를 세션에 넣습니다. 컨트롤을 사용하여 사이트 마스터 (마스터 페이지)의 데이터를 처리합니다. 세션의 데이터는 해당 컨트롤에 바인딩됩니다 (예 : Dropdownlist).보기에서 세션에 액세스하는 방법 asp.net mvc

asp.net MVC의 마스터 페이지에서 데이터를 처리하는 것이 가장 좋습니다. 컨트롤러에 대한 기본 클래스를 만들려고하는데, 로그인 자격 증명 (HttpContext.User.Identity)을 보유 할 수 없습니다. 보기에서 세션 데이터에 액세스하려면 어떻게해야합니까? 없는 작품 :(

어떤이있다?

답변

1

하는 데 도움이

나는 {스파크보기 엔진에 세션 [ "mydata을"]} @Session [ "mydata을"을 (! 사용하려고하지만했다 레이아웃 (마스터 페이지)에서 Html.RenderAction을 사용하면 마스터 페이지에서 사용할 모델로 모든 데이터를 미리 패키징 할 수 있습니다.

두 번째 방법은 다른 컨트롤러에서 컨트롤러를 상속받는 것입니다. 기본 컨트롤러가 인스턴스화되면 ViewData를 채우는 역할을합니다. h 필요한 데이터가 페이지에 표시됩니다. 이를 위해서는 모든 컨트롤러가 기본 컨트롤러에서 상속되어야합니다. 에서 4/5 목록 참조 : http://www.asp.net/mvc/tutorials/passing-data-to-view-master-pages-cs

당신은 또한 (! 너무 다른 방법) 액션 필터를 통해이 작업을 수행 할 수도 있지만 위의 두 가지 방법이

0

하는 당신은 할 수 있어야한다 조금 청소기 생각 컨트롤러 기본 클래스의 System.Threading.Thread.CurrentPrincipal.Identity.Name을 호출하여 로그온 한 사용자의 자격 증명을 얻습니다.

ViewData를 채우고보기의 데이터에 액세스 할 수 있어야합니다. 여전히 세션을 사용하려면

양자 택일로, 당신은을 통해 세션에 액세스 할 수 있어야합니다 - HttpContext.Current.Session [ "mydata을"]

+0

Naraen for System.Threading.Thread.CurrentPrincipal : D –

0

당신은 데이터를 공유하기위한 TempData [ "이름"] 사용할 수 있습니다 컨트롤러의 다른 동작. 값을 검색하면 데이터가 삭제되지만 .Peek 및 .Keep 메서드 기능을 사용하여 값을 저장할 수 있음을 기억하십시오.