2016-08-22 9 views
-1

두 가지 조치가 있습니다. 첫 번째보기를 반환하고 MVC의 다른 작업으로 리디렉션하는 방법 [또는보기를 반환하고 현재보기를 다시로드 하시겠습니까?]

public ActionResult ViewRequests() 
    { 
     List<AgentRequests> Reqs = con.AgentRequests 
             .Where(x => x.Status == RequestStatus.Open) 
             .OrderBy(x => x.RequestedOn).ToList(); 

     return View(Reqs); 
    } 

두 번째 :

public ActionResult ProcessRequest(long Id) 
    { 

     // Code to export data to excel file 

     //return RedirectToAction("ViewRequests"); 
     return View(KnoqedUsers); 
    } 

내 첫 번째 작업은 목록을 갖는 뷰를 ​​돌려줍니다. 이 목록의 각 행에는 "프로세스 요청"이라는 링크가 있습니다. 클릭하면 두 번째 작업이 호출됩니다.

내 두 번째 작업은 다운로드 할 Excel 파일 출력을 생성합니다.

내 문제는 - 현재 클릭 한 행이 처리됩니다. 그래서 내 견해에서 그것을 제거해야합니다.

수동으로 페이지를 다시로드하면 정상적으로 작동합니다. 하지만 어떻게 자동으로 다시로드 할 수 있습니까?

두 번째 코드와 같이 2 개의 return 문을 사용할 수 없습니다. 이것을 어떻게 할 수 있습니까?

답변

0

수 없습니다. 이것은 근본적으로 인터넷의 작동 방식이 아닙니다. 인터넷의 가장 중요한 원칙 중 하나는 요청 - 응답이라고하는 것입니다. 즉, 요청은 하나의 응답을 받고 응답은 요청 다음에옵니다. 클라이언트가 서버에 요청을 보내면 해당 서버는 클라이언트에 응답을 반환합니다. 보기 (HTML)는 응답이고 리디렉션은 이고 응답입니다. 따라서 을 모두 중 하나만 반환 할 수는 없습니다. 마찬가지로 클라이언트이 먼저 요청을 재생하지 않고 HTML 응답을 반환 한 다음 HTML 응답을 다시 보낼 수 없습니다.