2009-09-01 5 views
0

나는 내가 좋아하는 다른 작업이을 ViewData에 액세스 할내 컨트롤러의 모든보기에 Viewdata를 전달하는 방법은 무엇입니까?

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Screenname(FormCollection collection) 
    { 
     Viewdata["screenname"] = collection[0]; 

     return RedirectToAction("Index", new { ScreenName = ViewData["screenname"] }); 
    } 

다음 값을 선택 드롭 다운 목록이

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Create(FormCollection collection, string screenname) 
    { 
     try 
     { 
      /// thats my dataobject which creates 

      DataObj.SaveData(Guid.Empty, collection, screenname); 

      return RedirectToAction("Index", new { ScreenName = ViewData["screenname"] }); 
     } 
     catch 
     { 
      return View("Error"); 
     } 
    } 
지수는 다음과 같습니다

...이

public ActionResult Index(string ScreenName) 
    { 
     ///thats my list 
     GetTable = new GetDataTable(ScreenName); 

     return View(GetTable); 
    } 

처음에 값을 선택하면 색인이 제대로 실행됩니다 ....하지만 다시 viewdata에 액세스하려고하면 아무 값도 포함되지 않습니다. 도울 수 있습니다 ... 또는 데이터 저장 및 검색을위한 대체 방법.

+0

현재 허용되는 답변 (정적 변수 전달)을 사용하지 마십시오. –

답변

-1

뷰를 사용하여 사용자로부터 데이터를 가져 와서이를 정적 변수에 저장 한 다음이 변수를 사용하여 다른 모든보기에 데이터를 전달했습니다.

감사합니다.

+2

끔찍한 !!! 해결책. 모든 사용자는 동일한 정적 변수 세트를 가져오고 다른 사용자가 두 번째 사용자의 리디렉션 사이에있는 페이지에 액세스하면 두 번째 사용자는 첫 번째 값을 가져옵니다. 이 사람을 사용하지 마십시오. –

1

여기는 실제로 실제로 많이 다루어졌습니다. 이제 해결책은 RedirectToAction()을 사용하기 전에 TempData를 사용하여 필요한 데이터를 저장하는 것입니다.

"RedirectToAction"에 대한 검색을 수행하면 such as this one에 해당하는 게시물을 찾을 수 있습니다.

프레임 워크의 다음 공식 릴리스에서이를 수정합니다.

+0

심지어 tempdata를 사용할 때 데이터에 액세스 할 수 없습니다. 여전히 null로 남아 있습니다. 나는 이미 그걸 시도했다. 다른 옵션들도있다. – lucky

+0

플러스 데이터를 전달하고자하는 몇 가지 조치가 더있다. 누군가가 도와 줘야한다. – lucky

2

ViewData 개체는 실행중인 특정 동작에 따라 다릅니다. 작업간에 데이터를 전달하려면 TempData을 사용하십시오. MSDN의 the difference between the two에 대한 자세한 정보

Controller.Session 속성을 통해 세션 상태에 직접 쓸 수도 있습니다.

+1

임시 데이터를 시도했지만 작동하지 않는 것 같다 ... – lucky

관련 문제