2016-07-15 13 views
0

일부 웹 사이트 페이지의 양식을 자동 저장하고 싶습니다. 그래서 window.onbeforeunload에 연결하여 양식을 제출하십시오. 내 문제는 그들에게 성공 또는 오류 메시지를 toastr와 함께 제공하고 싶습니다만, 한 컨트롤러 동작에서 데이터를 유지하기 위해 이미 존재하는 것이 있는지 조치가 사이트에 있는지 알고 있습니다. 나는 tempdata 또는 viewbag와 함께 리디렉션을 사용할 수 없을 것이라고 생각합니다. 이 기능이 이미 존재합니까?프로젝트에서 컨트롤러 액션에 데이터를 유지하는 방법은 무엇입니까?

답변

0

왜 모델을 사용하지 않습니까? 나는 컨트롤러를 통해 데이터를 전달하는 가장 좋은 방법은 바로 모델이

return View("ViewName",model); 

처럼 각각의 행동에 제출하거나 다른 컨트롤러를 ACESS해야하는 경우

return RedirectToAction("YourAction", "YourController", new {model = yourModel}); 

내가 만드는 것이 좋습니다 toastr하기 RedirectToAction를 사용하여 전달 생각 래퍼를 참조하십시오. http://labs.bjfocus.co.uk/2014/06/create-an-mvc-wrapper-for-toastr/

+0

다른 페이지로 리디렉션 위치를 게시하는 방법을 추가하지 않고 리디렉션을 사용할 수 없도록 사용자가 페이지를 이동할 수 있도록 허용하고 있습니다. –

0

OnActionExecutingPreet Singh의 응답과 비슷하지만 일부 추가 부분을 사용하면이 기능을 사용할 수 있습니다.

public const string SESSION_ERROR = "SessionError"; 
    public const string SESSION_SUCCESS = "SessionSuccess"; 

    protected override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     base.OnActionExecuting(filterContext); 
     ViewBag.Error = HttpContext.Session[SESSION_ERROR]; 
     ViewBag.Success = HttpContext.Session[SESSION_SUCCESS]; 
     HttpContext.Session[SESSION_ERROR] = string.Empty; 
     HttpContext.Session[SESSION_SUCCESS] = string.Empty; 
    } 

위 코드

는 컨트롤러 액션 메시지를 유지하는 데 사용 나를 HttpContext.Session 쉽게 메시지를 설정할 수있다. 이 코드는 BaseController에 있으며 모든 컨트롤러가이를 확장합니다.