2013-06-08 6 views
0

컨트롤러에 레코드를 데이터베이스에 저장하고 다시 돌아 오는 POST 액션이 있다고 가정 해 봅니다. 나는 다음과 같은 것을한다 :원래 뷰로 돌아 가기

[HTTP POST] 
public ActionView Save() 
{ 
    //....do stuff 
    return View(); //This will return back to /ControllerName/Index 

    //or I can do something like this:  
    return View("ViewName") //this will return to /ControllerName/ViewName 
} 

그러나 여러개의 뷰에서 Save 메소드를 호출한다고 가정 해 보자. 액션을 호출 한 뷰로 돌아갈 수있는 가장 좋은 방법은 무엇입니까? 쿼리 문자열에 뷰 이름을 저장해야합니까? 또는보기 가방에? 어쩌면 더 좋은 접근법이 있을까요?

답변

2

정확하게 이해하고 있다면이 작업을 공유하고 다양한 소스에서 호출하고 싶습니까?

게시 작업이므로 게시물 요청의 일부로 게시물 모음의보기 이름을 보낼 수 있습니다.

[HTTP POST] 
    public ActionView Save(string viewName) 
    { 
     return View(viewName); 
    } 
0

나는 다른 동작을 사용하고 발신 URL로 리디렉션합니다. 이 패턴은 post redirect get이라고하며 많이 사용됩니다.

이 방법을 사용하면 명확한 URL을 얻고 브라우저를 새로 고치면 여전히 작동합니다. 중복 된 코드가 있다고 생각할 수도 있습니다. ViewModel과 Service에 코드를 유지하면 모든 것이 잘됩니다. 이 같은

Soemthing :

[HTTP POST] 
    public ActionView SaveCustomer(string viewName) 
    { 

     return RedirectToAction("DisplayCustomer") 
    } 

[HTTP POST] 
    public ActionView SaveProject(string viewName) 
    { 

     return RedirectToAction("DisplayProject") 
    } 
관련 문제