2013-11-23 1 views
0

가 나는 등 StudentController 등 내가 DB에있는 모든 해당 기관의 목록을 표시 각 모델의보기 Index이 같은 해당 컨트롤러가 Student, Course, Standard 등과 같은 모델 (POCO 엔티티)가 있습니다. 예를 들어 StudentController.Index()/Student/Index보기를 반환합니다. 그러나 DB에 학생 기록이 없으면 Index보기를 표시하는 대신 Navigation 컨트롤러의 Empty 작업 방법 (예 : NavigationController.Empty())으로 리디렉션되어 /Navigation/Empty보기를 반환합니다. 이는 모든 모델 엔티티 클래스에 대해 수행됩니다.ASP.NET MVC에서 하이퍼 링크를 통해 이전 뷰로 돌아가려면 어떻게해야합니까?

이제 빈 페이지에 이전 페이지로 돌아가려면 하이퍼 링크를 갖고 싶습니다. 그래서 나는 클래스에 GoBack()이라는 액션 메서드를 만들었습니다.이 메서드는 이전 뷰로 리디렉션됩니다. 그러나이 작업 방법에서 이전 페이지의 정보에 어떻게 액세스 할 수 있습니까? 아니면 이것을 할 수있는 더 좋은 방법이 있습니까? 뒤로 버튼을 사용하고 싶지 않습니다.

+0

을 같은 사이트에서 SPA (Single Page Application) 아키텍처를 조사하고 싶을 수도 있습니다. http://en.wikipedia.org/wiki/Single-page_application – jfrankcarr

답변

1

내가 아는 한 여기에는 몇 가지 경로가 있습니다. 세션 또는 응용 프로그램 캐시를 사용하여 las 방문 페이지를 저장 한 다음 을 사용하여 GoBack() 작업에 해당 페이지를 가져올 수 있습니다 (예 : 경로를 저장하여).

그러나 더 좋고 상태없는 aproach는 마지막 사용 컨트롤러 & 동작에 대한 두 가지 속성을 갖는보기 모델을 사용하여 하이퍼 링크를 렌더링하는 것일 수 있습니다. 그런 다음 액션 결과 (해당 레코드가없는 경우)를 /Navigation/Empty 액션으로 전달할 수 있습니다.

뷰 모델

public class NavigationVM 
{ 
public string LastAction {get;set;} 
public string LastController {get;set;} 
} 

네비게이션 컨트롤러 액션

public ActionResult Empty(string lastAction, string lastController) 
{ 
var vm = new NavigationVM() 
{ 
LastAction = lastAction, 
LastController = lastController 
} 
return View(vm); 
} 

보기

@model = Namespace.NavigationVM 

@Html.ActionLink("LinkName", Model.LastAction, Model.LastController) 

EDIT

그러면 students 컨트롤러가 호출 된 곳을 찾아야합니다 (예제에서). 즉 : 여분의 경로 값을 사용하여 StudentsController에 링크를 렌더링하십시오.

StudentController : 학생 컨트롤러에 하이퍼 링크

public ActionResult Index(string lastAction, string lastController) 

{ 
    .... // no students 
return RedirectToAction("Empty", "Navigation", new RouteValueDictionary(new { lastAction = "Index", lastController= "Student"})); 

} 

보기 (각각 lastActionlastController으로이보기를 렌더링 작업 및 컨트롤러 사용) : 당신이 APP-을 구축하는 경우

@Html.ActionLink("Get students", "Index", "Student", new { lastAction= "Index", lastController = "CallingController" }, null) 
+0

Ok. 이 해결책은'Go Back' 하이퍼 링크를 동적으로 만들어 줄 것입니다. 하지만 필자는 여전히'/ Student/Index' 액션 메소드,'/ Navigation/Empty' 메소드로 나를 데려 간 컨트롤러와 액션을 전달해야 할 것입니다. 이 정보는 어디서 얻을 수 있습니까? 즉,'/ Student/Index' 액션 메소드가 호출 될 때, 나는 그 정보가'/ Navigation/Empty' 메소드에 전달 될 수 있도록 호출 된 곳을 알아야합니다. –

+0

예를 들어 편집하십시오. – bump

관련 문제