2010-08-04 4 views
0

내 구체적인 예에서는 한 컨트롤러에서받은 오류를 다른 컨트롤러로 전달해야합니다. 다음은 설정 한 테스트 케이스입니다. TempData, ViewData 및 Session을 시도했습니다. 내가 알아 차 렸던 또 하나의 문제는 내가 리디렉션하는 방식 일 수 있습니다. 수신 컨트롤러에 중단 점을 입력하면 중단 점에 도달하지만 리디렉션에서는 절대 도달하지 않습니다.두 컨트롤러간에 데이터를 전달하는 방법은 무엇입니까?

public ActionResult Index() 
    { 
     //Handle action 

     return View(); 
    } 

은 그런 부분도에 오류를 렌더링하거나 고지

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %> 
<% 
    string Message = ""; 
    string Class = "hidden"; 
    if (ViewData["Notice"] != null && ViewData["Notice"] != "") 
    { 
     Message = (string)ViewData["Notice"]; 
     Class = (string)ViewData["NoticeClass"]; 
    } 
    if (Session["Notice"] != null && Session["Notice"] != "") 
    { 
     Message = (string)Session["Notice"]; 
     Class = (string)Session["NoticeClass"]; 
     Session["Notice"] = null; 
    } 

    Response.Write("<div class=\"" + Class + "\" id=\"error_div\"><span id=\"error_span\">" + Message + "</span></div>"); 
%> 
+0

내가 발견 한 것은 수신 컨트롤러에서 TempData, Session 또는 ViewData를 설정할 수 있다는 것인데 그 중 세 개의 값을 설정하면 그 때마다 redirecttoaction 값이 손실되는 것으로 나타납니다 . – Jhorra

답변

1

그래서 분명히 사이트의 루트로 리디렉션에 대한 구체적인 뭔가가있다./home/index에서 다른 작업으로 리다이렉트를 바꿨을 때 잘 동작했습니다. 내 가치관이 사라진 것만 리다.

1

UPDATE 발견 :

컨트롤러 액션을

public ActionResult New() 
    { 
     Session["Notice"] = "There was an error"; 
     Session["NoticeClass"] = "error"; 
     return RedirectToAction("Index", "Home"); 
    } 

는 여기에 수신 컨트롤러의 전송 우선 , 미안하지만 여전히 나는 cant는 명확한 그림을 얻지 못합니다. 으로 가정하면 데이터를 하나의 컨트롤러 동작으로 전달하고 컨트롤러 동작을 전달한 다음 부분 뷰로 렌더링합니다. 당신은 당신 이 그것을 저장하는 방식으로 다른 컨트롤러의 값을 얻을 수 세션을 사용할 수 있습니다 ....하지만 난 생각 tempdata 또한 리디렉션에 대한 귀하의 case..then에서 작동 할 수 있습니다 -

return RedirectToAction("Action","Controller",routevalues) 

나는 당신이 읽어야 할 생각에 대한 tempdata 및 here 더 당신이 할당하지 않은 사용을 ViewData를 해달라고을 ViewData 그것은 내가 당신의 코드에서 볼 수없는 당신은 아직도 그것을 사용하는 몇 가지 값. 당신이 tempdata를 사용하여 값을 전달하기 위해 찾고 있다면 요청에 따라

Tempdata 저장 값은 .... 그래서 새로운 요청은 values.Have에게 this을 살펴 잃게됩니다 것을 의미합니다.

그래서, 당신은 단지 문자열을 전달하고자하는 경우 귀하의 경우 같은 것을 할 -

public ActionResult New() 
    { 
     string str = "There was an error"; 
     return RedirectToAction("Index",str); 
    } 
    public ActionResult Index(string str) 
    { 
     Response.Write(str); 
     return View(); 
    } 
+0

실제로 그것을 작성하고 마스터 페이지에서 사용되는 부분보기로 포맷합니다. 오류를 찾아 표시합니다. – Jhorra

+0

또한 실제로 두 개의 데이터를 전달합니다. 또한 나는 다른 액션으로 넘어가는 것이 아니라 완전히 다른 컨트롤러로 넘어 가고 있습니다. – Jhorra

+0

컨트롤러간에 데이터를 전달하는 경우 세션을 사용하는 것이 좋습니다. 달성하고자하는 것을보다 명확하게 게시하십시오.이 간단한 예제를 살펴보십시오. http://msdn.microsoft.com/en-us/library/dd394711.aspx – Vishal

관련 문제