c# xmlserializer 예제




'/'응용 프로그램의 서버 오류입니다. 이 객체에 대해 정의 된 매개 변수없는 생성자가 없습니다. (4)

콜 스택은 다음을 보여줍니다.

[MissingMethodException: No parameterless constructor defined for this object.]
System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) +0
System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) +86
System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) +230
System.Activator.CreateInstance(Type type, Boolean nonPublic) +67
System.Activator.CreateInstance(Type type) +6
System.Web.Mvc.DefaultModelBinder.CreateModel(ModelBindingContext bindingContext, Type modelType) +277
System.Web.Mvc.<>c__DisplayClass1.<BindModel>b__0() +98
System.Web.Mvc.ModelBindingContext.get_Model() +51
System.Web.Mvc.DefaultModelBinder.BindModelCore(ModelBindingContext bindingContext) +2600
System.Web.Mvc.DefaultModelBinder.BindModel(ModelBindingContext bindingContext) +1067
System.Web.Mvc.DefaultModelBinder.BindProperty(ModelBindingContext parentContext, Type propertyType, Func`1 propertyValueProvider, String propertyName) +208
System.Web.Mvc.DefaultModelBinder.BindModelCore(ModelBindingContext bindingContext) +1787
System.Web.Mvc.DefaultModelBinder.BindModel(ModelBindingContext bindingContext) +1067
System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ParameterInfo parameterInfo) +355
System.Web.Mvc.ControllerActionInvoker.GetParameterValues(MethodInfo methodInfo) +439
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +288
System.Web.Mvc.Controller.ExecuteCore() +180
System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +96
System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +36
System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext) +377
System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext httpContext) +71
System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext httpContext) +36
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

숨겨진 필드와 제출 버튼이 하나씩있는 작은 양식이 있습니다. 내가 누를 때, 나는 심지어 요청한 방법을 때리지도 못했다.

어떻게하면 이것을 디버깅 할 수 있습니까? 매개 변수가없는 생성자가없는 객체가 무엇인지 알면 큰 도움이 될 것입니다. 이 객체는 어디에 있습니까? 이 문제를 어떻게 해결할 수 있습니까? 나는 그 질문이 다소 모호하다는 것을 알고 있지만, 현재 내가 가진 전부이다.

--편집하다--
내 양식에 Html.Hidden () 입력을 추가했습니다. 이전 작업에 따라 값은 ""일 수 있습니다. 액션은 ModelBinding을 사용합니다. 값이 ""이고 데이터 유형이 SelectList 일 때마다 modelbinder가 나를 괴롭 히게됩니다.

SelectList가 그 일을하는 방식이 점점 더 불편 해집니다 ... 아이디어는 훌륭하지만 문제가 있습니다.


Default.aspx를 제거 했습니까? 루트를 올바르게 렌더링하려면 그 위치에 있어야합니다. 이는 Dependency Injection을 사용하려하고 컨테이너가 제대로 설정되지 않은 경우에도 발생할 수 있습니다. 즉, DI 컨테이너에 인스턴스를 묻는 ControllerFactory가 없다는 의미입니다.


기본 모델 바인더를 사용하려면 action 인수의 사용자 정의 클래스에 매개 변수없는 생성자가 있어야합니다. 그렇지 않으면 (1) 사용자 정의 모델 바인더를 작성하거나 (2) 사용자 정의 클래스 대신 기본 유형을 조치에 전달하십시오.


SelectList 인스턴스를 반환하는 뷰 모델 클래스의 속성도 있습니다. Bind 속성으로 클래스를 장식하여 다음과 같은 속성을 제외했습니다.

[Bind(Exclude = "Countries")] public class MyViewModel { ...

public SelectList Countries { get; set; }

}

희망이 도움이된다. Roger


내 문제의 근원은 또한 SelectList였다.

나는 이것을 가지고 있었다 :

<%: Html.DropDownListFor(m => Model.Destinations, Model.Destinations)%>

내가 이것을 가져야했을 때 :

<%: Html.DropDownListFor(m => Model.Destination, Model.Destinations)%>

Destination은 사용자의 선택이고, Destinations는 가능한 값 목록입니다. SelectList를 두 번 사용하면 문제가 발생했습니다.





asp.net-mvc