2011-08-11 2 views
1

그래서이 뷰어의 폼에서 POST를 통해 컨트롤러로 푸시하는 변수가 있습니다.컨트롤러 MVC 내부의 전역 변수

변수를 뷰 데이터로 푸시하여 다음 뷰를 사용할 수 있도록합니다. 그러나 그 뷰는 폼이 필요 없기 때문에 동일한 변수를 다음 컨트롤러로 푸시 할 수 없습니다. 즉, 컨트롤러에서 정보를 앞뒤로 움직여보기 및 뒤집기가 번거롭기 때문에 컨트롤러 내부에 글로벌 변수를 유지하여 모든 액션 결과로 액세스 할 수있는 방법을 찾고 있습니다 ... 일반 내 프로그램의 고장이 ...

-User types a "name" 

-I send "name" to controller. 
-I push 'name' into viewstate (query entity framework to get a list of stuff 'name' 
    has access to) and return that list into the view. 
-In that view I can access the 'name' since it was in view state. 
-Clicking on a link inside the page takes me to another controller where I need 
    to get access to 'name' WITHOUT passing view Routing or POST. 

분명히 쉬운 방법은 전 세계적으로 '이름'을 선언하는 것입니다 그리고 그것은 항상 사용할 수 있지만, 내 인생 내가 방법을 알아낼 수 없습니다.

답변

8

Session에 저장하는 것이 고려해 봤습니까?

이렇게하면 컨트롤러 또는 뷰에서 쉽게 액세스 할 수 있으며 전역 변수가 필요하지 않습니다.

보관 :

[HttpPost] 
public ActionResult YourPostMethod(string name) 
{ 
    Session["Name"] = "yourName"; 
} 

액세스 : *

하기 전에 그것을 잡아에가 있는지 확인해야합니다 :

var whatsMyName = (Session["Name"] != null) ? Session["Name"] : ""; 

확장 성 고려

MVC 응용 프로그램은 웹을 모방하여 상태를 유지할 수 있도록 설계되었습니다. 세션 변수를 도입하면 변경되므로 확장 성 등과 관련된 문제가 발생할 수 있습니다.

세션 내에 데이터를 저장하는 각 사용자는 서버 수준에서 리소스를 차지합니다. 사용자 수와 세션 내 저장 대상에 따라 값이 너무 커지면 메모리가 부족할 수 있습니다.

0

클라이언트가 연결된 동안 존재하는 연관 배열 인 세션 객체를 사용하지 않는 이유는 무엇입니까? 당신은 자신의 세션까지 각 사용자에 대해이 사용할 수

1
$_SESSION['name'] = "zzzz"; // store session data 
name = $_SESSION['name']; //retrieve data 

은 ..이 더 http://www.tizag.com/phpT/phpsessions.php에 대한

+0

도움이되기를 바랍니다 활성화 – Baz1nga