Система.MissingMethodException: для этого объекта не определен конструктор без параметров. MVC4 с

Я создаю приложение MVC4, и у меня есть некоторые проблемы, когда я пытаюсь вернуть форму из моего представления на мой контроллер.

Я прочитал несколько сообщений по этой теме, но, к сожалению, мне не удалось найти, какой объект не имеет конструктора без параметров. Все мои классы модели имеют параметр конструктора. И в debug стек ошибок находится только в Internet Explorer, но ничего не происходит в visual studio.

это стек ошибок :

Сведения Об Исключении: System.MissingMethodException: для этого объекта не определен конструктор без параметров.

Ошибка Источник:

необработанное исключение при выполнении текущего веб-запроса. Информацию о происхождении и месте возникновения исключения можно определить, используя следующую трассировку стека исключений.

Трассировка Стека:

[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) +117
   System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) +247
   System.Activator.CreateInstance(Type type, Boolean nonPublic) +106
   System.Web.Mvc.DefaultModelBinder.CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType) +243
   System.Web.Mvc.DefaultModelBinder.BindComplexModel(ControllerContext controllerContext, ModelBindingContext bindingContext) +151
   System.Web.Mvc.DefaultModelBinder.UpdateCollection(ControllerContext controllerContext, ModelBindingContext bindingContext, Type elementType) +545
   System.Web.Mvc.DefaultModelBinder.BindComplexModel(ControllerContext controllerContext, ModelBindingContext bindingContext) +609
   System.Web.Mvc.DefaultModelBinder.GetPropertyValue(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor, IModelBinder propertyBinder) +33
   System.Web.Mvc.DefaultModelBinder.BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor) +497
   System.Web.Mvc.DefaultModelBinder.BindProperties(ControllerContext controllerContext, ModelBindingContext bindingContext) +283
   System.Web.Mvc.DefaultModelBinder.BindComplexModel(ControllerContext controllerContext, ModelBindingContext bindingContext) +677
   System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext, ParameterDescriptor parameterDescriptor) +489
   System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext, ActionDescriptor actionDescriptor) +153
   System.Web.Mvc.Async.<>c__DisplayClass25.<BeginInvokeAction>b__1e(AsyncCallback asyncCallback, Object asyncState) +883059
   System.Web.Mvc.Async.WrappedAsyncResult`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +137
   System.Web.Mvc.Async.AsyncResultWrapper.Begin(AsyncCallback callback, Object state, BeginInvokeDelegate beginDelegate, EndInvokeDelegate`1 endDelegate, Object tag, Int32 timeout) +167
   System.Web.Mvc.Async.AsyncResultWrapper.Begin(AsyncCallback callback, Object state, BeginInvokeDelegate beginDelegate, EndInvokeDelegate`1 endDelegate, Object tag) +27
   System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__17(AsyncCallback asyncCallback, Object asyncState) +50
   System.Web.Mvc.Async.WrappedAsyncResult`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +137
   System.Web.Mvc.Async.AsyncResultWrapper.Begin(AsyncCallback callback, Object state, BeginInvokeDelegate beginDelegate, EndInvokeDelegate`1 endDelegate, Object tag, Int32 timeout) +167
   System.Web.Mvc.Controller.BeginExecuteCore(AsyncCallback callback, Object state) +869289
   System.Web.Mvc.Async.WrappedAsyncResult`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +137
   System.Web.Mvc.Async.AsyncResultWrapper.Begin(AsyncCallback callback, Object state, BeginInvokeDelegate beginDelegate, EndInvokeDelegate`1 endDelegate, Object tag, Int32 timeout) +167
   System.Web.Mvc.Async.AsyncResultWrapper.Begin(AsyncCallback callback, Object state, BeginInvokeDelegate beginDelegate, EndInvokeDelegate endDelegate, Object tag) +27
   System.Web.Mvc.Controller.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state) +391
   System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__3(AsyncCallback asyncCallback, Object asyncState) +827094
   System.Web.Mvc.Async.WrappedAsyncResult`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +137
   System.Web.Mvc.Async.AsyncResultWrapper.Begin(AsyncCallback callback, Object state, BeginInvokeDelegate beginDelegate, EndInvokeDelegate`1 endDelegate, Object tag, Int32 timeout) +167
   System.Web.Mvc.Async.AsyncResultWrapper.Begin(AsyncCallback callback, Object state, BeginInvokeDelegate beginDelegate, EndInvokeDelegate endDelegate, Object tag) +27
   System.Web.Mvc.<>c__DisplayClass6.<BeginProcessRequest>b__2() +283
   System.Web.Mvc.<>c__DisplayClassb`1.<ProcessInApplicationTrust>b__a() +19
   System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Func`1 func) +161
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +405
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +375

мои классы модели :

 public class Form
    {
        public Form()
        {
            this.Rows = new List<Row>();
        }

        public List<Row> Rows { get; set; }
    }

    public class Row
    {
        protected Row()
        {
            this.Label = string.Empty;
            this.Type = string.Empty;
        }

        public string Label { get; set; }

        public string Type { get; set; }
    }

    public class SimpleRow : Row
    {
        public SimpleRow()
        {
            this.Value = string.Empty;
        }

        public string Value { get; set; }
    }


    public class DropDownRow : Row
    {
        public DropDownRow()
        {
            this.Content = new List<ContentDropDown>();
        }

        public List<ContentDropDown> Content { get; set; }
    }


    public class ContentDropDown
    {
        public ContentDropDown()
        {
            this.Title = string.Empty;
            this.Selected = false;
        }

        public string Title { get; set; }

        public bool Selected { get; set; }
    }

2 ответов


конструктор по умолчанию на вашем Row класс protected. Попробуйте изменить его на public.


Это также может произойти, если ваш базовый класс определен для приема параметра. Поскольку MVC не может передать правильное значение, он терпит неудачу. Попробуйте также объявить класс без параметров. Это решило мою проблему во время нажатия кнопки postback.

например:

public class Employee
{

   public int EmployeeID {get;set;}
   public string EmployeeName {get;set;}
   public int CostCenter {get;set;}
   public DateTime StartDate {get;set;}

   public Employee(int employeeID)
   {
       //Initialize values
   }

   //Also include a parameter-less construct like below
   public Employee()
   {
   }


}