문제

다른 컨트롤러에서보기를 표시 할 수 있습니까?

예를 들어 a가 있습니다 CategoriesController 그리고 a Category/NotFound.aspx 보다. 그 동안 CategoriesController, 나는 쉽게 돌아올 수있다 View("NotFound").

이제 내가 가지고 있다고 말합니다 ProductsController 그리고 제품을 추가하는 행동과보기. 그러나이 조치는 제품을 추가 할 카테고리가 있어야합니다. 예를 들어, Products/Add/?catid=10.

내가 catid, 나는 보여주고 싶다 NotFound a 대신 범주 컨트롤러에서 봅니다 CategoryNotFound 제품 컨트롤러 아래에서 봅니다.

이것이 가능합니까 아니면 내가 잘못된 방식으로 물건을 구성하고 있습니까? 이것을하는 좋은 방법이 있습니까?

도움이 되었습니까?

해결책

예. 기본적으로 ASP.NET MVC는 먼저 확인합니다 \Views\[Controller_Dir]\, 그러나 그 후에는보기를 찾지 못하면 체크인합니다. \Views\Shared.

공유 디렉토리는 특별히 여러 컨트롤러에서 뷰를 공유 할 수 있습니다. 공유 하위 디렉토리에 견해를 추가하면 좋습니다.

당신이한다면 return View("~/Views/Wherever/SomeDir/MyView.aspx") 원하는보기를 반환 할 수 있습니다.

다른 팁

당신이 사용할 수있는:

return View("../Category/NotFound", model);

ASP.NET MVC 3에서 테스트되었지만 ASP.NET MVC 2에서도 작동해야합니다.

네 가능합니다. 반환 a RedirectToAction() 다음과 같은 방법 :

return RedirectToAction("ActionOrViewName", "ControllerName");

당신은 시도 했습니까? RedirectToAction?

그래 넌 할수있어. 다음과 같은 조치를 반환하십시오.

return RedirectToAction("View", "Name of Controller");

An example:

RedirectToAction("Details/" + id.ToString(), "FullTimeEmployees");

이 접근법은 GET 메소드를 호출합니다

또한 다음과 같은 작업에 값을 전달할 수 있습니다.

RedirectToAction("Details/" + id.ToString(), "FullTimeEmployees", new {id = id.ToString(), viewtype = "extended" );

컨트롤러를 호출 할 수도 있습니다 자바 스크립트/jQuery. 404 또는 다른 USERCONTROL/PAGE를 반환하는 컨트롤러가 있다고 가정 해 봅시다. 그런 다음 일부 조치에서 클라이언트 코드에서 컨트롤러를 발사하고 결과를 반환하는 주소를 호출 할 수 있습니다. HTML 클라이언트 코드 형식은이 반환 된 결과를 가져 와서 페이지에서 원하는 곳에 넣을 수 있습니다 ...

이 코드를 사용하면 모든 컨트롤러를 얻을 수 있습니다.

var controller = DependencyResolver.Current.GetService<ControllerB>();
controller.ControllerContext = new ControllerContext(this.Request.RequestContext, 
controller);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top