2012-05-24 2 views
0

매우 이상한 문제가 있습니다.

첫 페이지에 드롭 다운이 있으므로 드롭 다운에서 값을 선택하고 버튼을 클릭하십시오. MVC3에서 세션을 통해 값을 가져 오는 방법

int hobbyid = Convert.ToInt32(formcollection["Hobby"]); 

이제 문제는 새 페이지 탭 아래에 온다 : 해당 페이지에 내가 이것을 사용하고 첫 페이지에 드롭 다운 메뉴에서 선택한 값을 가져올 수 있도록 클릭에
내가 다른 페이지로 이동합니다.

첫 페이지의 버튼을 클릭하면이 탭으로 이동하지만 다른 페이지로 이동 한 다음 tab.now를 클릭하여이 페이지로 이동하면 어떤 value.how도 생성되지 않습니다. 이 문제가 해결됩니까?
세션을 사용하여이 문제를 해결할 수 있습니까?
그러나 나는 그것을 사용하는 방법을 모릅니다. 제발 도와주세요.

답변

0

취미를 유지하려면 내비게이션을 어딘가에 유지해야합니다. 한 가지 방법은 querystrings을 유지하는 것입니다. 즉 : 첫 번째 탭으로 이동하면 qyerystring의 일부로 hobbyid를 전달하고 거기에서 그것을 읽은 다음 해당 페이지의 모든 관련 링크 (hobbyid를 원하는 페이지를 가리킴)의 qyerystring 부분으로 설정합니다 . 그런 다음 formcollection [ "hobby"]이 null 인 경우 쿼리 문자열에서 값을 읽어야합니다.

또 다른 방법은 세션을 사용하는 것입니다. 그래서 dropdwon에서 submit을 할 때마다 세션 변수에 설정하고 거기서 접근합니다.

Session["selectedHobby"]="some value read from the form"; 
0

ASP.net TempData를 사용할 수 있습니다.

TempData는 사용자의 세션에서만 사용할 수 있으며 읽은 다음 요청이 끝날 때까지 지워집니다. TempData는 두 개의 요청 또는 리디렉션 시나리오간에 데이터가 지속되어야 할 때 사용할 수 있습니다.

스토어 :

[HttpPost] 
    public ActionResult MyAction(UserInfo user) { 


    TempData["Hobby"] = User.Hobby;//In USerInfo view model Hobby property is of type string or int depends on what you need) 

return RedirectToAction("Index"); 

} 

이보기에서을 취득합니다 :

<div> 
@if (TempData["Hobby"] != null) { 

<p>Hobby: @TempData["Hobby"]</p> 

} 
</div> 
관련 문제