简体   繁体   中英

No parameterless constructor defined for this object MVC4

This question already asked so many time and also tried and created default contructor for my model class but still im getting error.below are my code lines, i want to know if somebody can help me to fix my code..

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();
        }

    }

Below is my TestRecordModel class

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

        }

Below is my bootstrapper,WindsorControllerActivator and 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());
        } 
    }

也许如果您尝试使用serialize或Activator.CreateInstance(t),则将收到有关无参数构造函数的错误。

The error you are getting is the standard error when the mvc framework creates a controller. I Think that you registration/bootstrapper is not being called correctly. Set a breakpoint inside WindsorControllerActivator to see if it gets called.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM