2010-02-26 4 views
0

public override IController CreateController(System.Web.Routing.RequestContext requestContext, string controllerName) asp.net mvc DefaultContollerFactory의 CreateController를 재정의 하시겠습니까?

이 함수에 전달 된 controllerName은 때때로 "content"입니까?

어떻게 피할 수 있습니까?

 

public override IController CreateController(System.Web.Routing.RequestContext requestContext, string controllerName) 
     { 
      var controllerType = GetControllerType(controllerName); 

      var projectType = ConfigurationManager.AppSettings["Sales"]; 

      if (controllerType.BaseType == Type.GetType(projectType)) 
      { 
       var salesid = requestContext.RouteData.Values["salesid"]; 
       int intValue; 
       int.TryParse(salesid.ToString(), out intValue); 

       if (intValue == 0) 
        throw new FormatException("salesid is missing"); 

       return Activator.CreateInstance(controllerType, int.Parse(salesid.ToString())) as IController; 
      } 

      return base.CreateController(requestContext, controllerName); 
     } 
 

여기서 전달되는 controllerName은 때때로 "내용"입니다. 방금 ​​컨트롤러 이름이어야한다고 생각했습니다.

답변

0

이 함수에 전달 된 controllerName은 때때로 "내용"입니까?

무슨 뜻인지 확실하지 않다면 가끔입니다. ContentController가 있어야하며이 컨트롤러의 동작이 호출 될 때 컨트롤러 이름은 "content"/ "Content"가됩니다.

어떻게 피할 수 있습니까?

controllerName 매개 변수에 컨트롤러의 이름을 지정하지 않아도되는 이유는 없습니다.

관련 문제