2012-07-05 3 views
0

web.config 키가 true로 설정된 경우 모든보기에 대해 유지 관리 페이지와 같은 기본 페이지를 표시하는 방법은 무엇입니까?조건이 true 일 때 기본보기 표시 asp.net mvc3

키가 거짓이면 일반보기를 표시하십시오.

Plz 참고, 각 컨트롤러에서 코드를 반복하고 싶지 않으며 정의 할 수있는 _ViewStart 또는 _Layout 페이지와 같은 일반적인 위치를 찾고 있습니다.

감사합니다.

+0

http://stackoverflow.com/questions/4879336/beginrequest-like-filter-in-mvc-3 – McGarnagle

+2

[필터] (http://msdn.microsoft.com/en-us/library)를 조사해야합니다. /gg416513(v=vs.98).aspx) – keshav

답변

0

OnActionExecuting에 액세스 할 수있는 고유 한 ActionFilterAttribute 및 기본 Controller를 만들 수 있습니다. 그런 다음 Web.Config 값을 설정했는지 (웹 응용 프로그램을 처음 시작할 때 응용 프로그램 변수로로드할지 여부) 설정되어 있는지 확인하고 컨트롤러 및 작업 특성을 유지 관리 페이지로 설정합니다. 그런 다음 표준 컨트롤러에서 상속하는 대신 모든 컨트롤러가 대신 컨트롤러에서 상속받습니다. 단, 정상 컨트롤러에서 상속받을 수있는 유지 관리 컨트롤러는 예외입니다. 예를 들어

는 :

public class SampleController : MyController 
{ 
... Your actions ... 
} 

그런 다음 클래스를 만들라고 RedirectToMaintenancePageAttribute.cs :

[RedirectToMaintenancePage] 
public class MyController : Controller 
{ 
} 

그리고 일반적인 컨트롤러에 대한

public class RedirectToMaintenancePageAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     If Web.config says to go to Maintenance page then... 
     { 
       filterContext.Result = RedirectToRouteResult("route name") // Or some other redirect 
       return; 
     } 

     // else 
     base.OnActionExecuting(filterContext); 
    } 
} 

이것은 모든의 상단에 꺼져 내 머리,하지만 그것이 작동해야한다고 생각하고, 잘하면 그것은 당신에게 몇 가지 아이디어를 줄 것이다.

+0

의견을 보내 주셔서 감사합니다. @Steve가 제안한 것을 구현했고 훌륭하게 작동합니다. – annantDev

관련 문제