Asp.net-mvc – No parameterless constructor defined for this object in mvc4

asp.net-mvcasp.net-mvc-4

using Michell.ClaimsAuditAdmin.Models;
using Mitchell.ClaimsAuditAdmin.Repositories;
using Mitchell.ClaimsAuditAdmin.Web.Models;
using System.Web.Mvc;

namespace Mitchell.ClaimsAuditAdmin.Web.Controllers
{
    public class ClaimAuditAdminController : Controller
    {  
       private readonly IClaimsAuditAdminRepository claimAuditAdminRepository;


       public ClaimAuditAdminController(IClaimsAuditAdminRepository claimAuditAdminRepository)
       {
           this.claimAuditAdminRepository = claimAuditAdminRepository;
       }

         public ActionResult Index()
        {
            return View("SearchResultTest");
        }

        public ActionResult TestView()
        {
            return View("TestView");
        }


        public ViewResult DisplayClaimAuditView()
        {
           return View("_ClaimAuditAdminView");
        }

        public ActionResult SearchResultTest()
        {
            return View();
        }

        public ActionResult ClaimAuditReviewFilter()
        {
            //ClaimAuditModel objClaimAudit = new ClaimAuditModel();
            //objClaimAudit.ClaimAudit_ID = 1;
            //objClaimAudit.ClaimAudit_Name = "Claim1";
            //objClaimAudit.FromDate = DateTime.Now.AddYears(-1);
            //objClaimAudit.FromDate = DateTime.Now;
            return PartialView("_ClaimAuditAdminView");
        }



    }
}

I know this question has been asked many times,but after reading all those SO similar questions i am not able to track my error.I have put the debugger in My controller's Constructor(ClaimAuditAdminController) but debugger doesn't goes there.
My Route.Config is

public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "ClaimAuditAdmin", action = "DisplayClaimAuditView", id = UrlParameter.Optional }
            );
        }

and the screen shot of my error is

Exception Details: System.MissingMethodException: No parameterless
constructor defined for this object.

Source Error:

An unhandled exception was generated during the execution of the
current web request. Information regarding the origin and location of
the exception can be identified using the exception stack trace below.

Stack Trace:

[MissingMethodException: No parameterless constructor defined for this
object.] System.RuntimeTypeHandle.CreateInstance(RuntimeType type,
Boolean publicOnly, Boolean noCheck, Boolean& canBeCached,
RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0
System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean
skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +113
System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly,
Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
+232 System.Activator.CreateInstance(Type type, Boolean nonPublic) +83 System.Activator.CreateInstance(Type type) +6 System.Web.Mvc.DefaultControllerActivator.Create(RequestContext
requestContext, Type controllerType) +55

[InvalidOperationException: An error occurred when trying to create a
controller of type
'Mitchell.ClaimsAuditAdmin.Web.Controllers.ClaimAuditAdminController'.
Make sure that the controller has a parameterless public constructor.]
System.Web.Mvc.DefaultControllerActivator.Create(RequestContext
requestContext, Type controllerType) +179
System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext
requestContext, Type controllerType) +80
System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext
requestContext, String controllerName) +74
System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase
httpContext, IController& controller, IControllerFactory& factory)
+197 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +49
System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext,
AsyncCallback callback, Object state) +50
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext
context, AsyncCallback cb, Object extraData) +16
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
+301 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

——————————————————————————– Version Information: Microsoft .NET Framework Version:4.0.30319;
ASP.NET Version:4.0.30319.17929
}

Best Answer

activator trying to create ur controller with parametrless constructor. but while your controller constructor has parameter

public ClaimAuditAdminController(IClaimsAuditAdminRepository claimAuditAdminRepository) <--this place
   {
       this.claimAuditAdminRepository = claimAuditAdminRepository;
   }

the exception occurs. Try to remove param from constructor or try override the DefaultControllerFactory and create controller with parameter.

look here

Related Topic