0

這個問題沒有定義參數的構造函數已經問這麼多時間,也試圖創造默認的構造器爲我的模型類,但仍然即時得到error.below是我的代碼行,我想知道,如果有人可以幫助我修復我的代碼..此對象MVC4

public class RecordController: Controller 
    { 
     private readonly IRecord _DataService = null; 

     public RecordController(IRecord dataService) 
     { 
      _DataService = dataService ; 
     } 

     [HttpGet] 
     public ActionResult TestRecord() 
     { 
      return View(); 
     } 

     [HttpPost] 
     public ActionResult TestRecord(TestRecordModel model) 
     {   

      return View(); 
     } 

    } 

下面是我TestRecordModel類

public class TestRecordModel 
     { 
      [Required] 
      [Display(Name = "UserNo #:)] 
      public string UserNo { get; set; } 

     } 

下面是我的引導程序,WindsorControllerActivator的d ControllerInstaller

public class Bootstrapper 
    { 
     #region Properties 

     public static IWindsorContainer Container { get; private set; } 

     #endregion 

     /// <summary> 
     /// Initialises this instance. 
     /// </summary> 
     public static void RegisterAllTypes() 
     { 
      // adds and configures all components using WindsorInstallers from executing assembly. 
      Container = new WindsorContainer().Install(FromAssembly.InThisApplication()); 

      Container.Register(Component.For<IViewEngine>().ImplementedBy<RazorViewEngine>()); 
      Container.Register(Component.For<IControllerFactory>().ImplementedBy<WindsorControllerFactory>()); 
      Container.Register(Component.For<IControllerActivator>().ImplementedBy<WindsorControllerActivator>()); 
      Container.Register(Component.For<IHttpControllerActivator>().ImplementedBy<WindsorHttpControllerActivator>()); 

      DependencyResolver.SetResolver(new WindsorDependencyResolver(Container.Kernel)); 

      GlobalConfiguration.Configuration.DependencyResolver = new WindsorHttpDependencyResolver(Container.Kernel); 
     } 

     public static void RegisterType<TContract, TImplementation>(params KeyValuePair<string, string>[] parameters) 
      where TContract : class 
      where TImplementation : TContract 
     { 
      var dependencies = parameters 
       .Select(parameter => Parameter.ForKey(parameter.Key).Eq(parameter.Value)) 
       .Select(dummy => (Dependency)dummy).ToArray(); 

      Container.Register(Component.For<TContract>() 
            .ImplementedBy<TImplementation>() 
            .DependsOn(dependencies)); 
     } 

     public static TContract Resolve<TContract>() 
     { 
      return Container.Resolve<TContract>(); 
     } 

     /// <summary> 
     /// Releases unmanaged and - optionally - managed resources. 
     /// </summary> 
     public static void Dispose() 
     { 
      // clean up, application exits. 
      if (Container != null) 
       Container.Dispose(); 
     } 
    } 





public class WindsorControllerActivator : IControllerActivator 
    { 
     #region Private Members 

     private readonly IKernel _kernel; 

     #endregion 

     #region Constructor(s) 

     /// <summary> 
     /// Initializes a new instance of the <see cref="WindsorControllerActivator" /> class. 
     /// </summary> 
     /// <param name="kernel">The kernel.</param> 
     public WindsorControllerActivator(IKernel kernel) 
     { 
      _kernel = kernel; 
     } 

     #endregion 

     #region IControllerActivator Members 

     /// <summary> 
     /// When implemented in a class, creates a controller. 
     /// </summary> 
     /// <param name="requestContext">The request context.</param> 
     /// <param name="controllerType">The controller type.</param> 
     /// <returns> 
     /// The created controller. 
     /// </returns> 
     public IController Create(RequestContext requestContext, Type controllerType) 
     { 
      return (IController)_kernel.Resolve(controllerType); 
     } 

     #endregion 
    } 







public class ControllerInstaller : InstallerBase 
    { 
     /// <summary> 
     /// Performs the installation in the <see cref="T:Castle.Windsor.IWindsorContainer" />. 
     /// </summary> 
     /// <param name="container">The container.</param> 
     /// <param name="store">The configuration store.</param> 
     /// <exception cref="System.NotImplementedException"></exception> 
     public override void Install(IWindsorContainer container, IConfigurationStore store) 
     { 
      container.Register(
       Classes.FromAssemblyInDirectory(new AssemblyFilter(GetExecutingDirectory())) 
        .BasedOn<IController>() 
        .LifestyleTransient()); 
     } 
    } 
+3

哪個對象它把它扔了? –

+1

您需要IRecord映射到你想要實現的類。 – Rikard

+0

請檢查答案或添加更多的幫助,我們 – Krekkon

回答

0

也許如果您嘗試使用序列化或Activator.CreateInstance(T),那麼你將獲得有關參數的構造函數的錯誤。

0

你得到的錯誤是標準的錯誤時,MVC框架創建一個控制器。我認爲你註冊/ bootstrapper沒有被正確調用。 設置斷點內WindsorControllerActivator,看它是否被調用。

+0

在仔細檢查,它看起來像沒有IRecord的註冊,和K是你確定你控制器實現一個IController? –