2011-09-21 4 views
28

사용자의 데이터를로드하고 편집하려고합니다. 이 일하고있다 메신저 꽤 확실하지 내가 변경 어떤하지만 지금은 내가 다음과 같은 오류를 얻고있다 ... 심지어 ModelState.IsValid에 도달하고 있지 않다MVC3 값은 null 일 수 없습니다. 매개 변수 이름 : 값

Value cannot be null. 
Parameter name: value 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.ArgumentNullException: Value cannot be null. 
Parameter name: value 

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: 


[ArgumentNullException: Value cannot be null. 
Parameter name: value] 
    System.ComponentModel.DataAnnotations.ValidationContext.set_DisplayName(String value) +51903 
    System.Web.Mvc.<Validate>d__1.MoveNext() +135 
    System.Web.Mvc.<Validate>d__5.MoveNext() +318 
    System.Web.Mvc.DefaultModelBinder.OnModelUpdated(ControllerContext controllerContext, ModelBindingContext bindingContext) +139 
    System.Web.Mvc.DefaultModelBinder.BindComplexElementalModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Object model) +66 
    System.Web.Mvc.DefaultModelBinder.BindComplexModel(ControllerContext controllerContext, ModelBindingContext bindingContext) +1367 
    System.Web.Mvc.DefaultModelBinder.BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) +449 
    System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext, ParameterDescriptor parameterDescriptor) +317 
    System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext, ActionDescriptor actionDescriptor) +117 
    System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +343 
    System.Web.Mvc.Controller.ExecuteCore() +116 
    System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +97 
    System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10 
    System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +37 
    System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21 
    System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +12 
    System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62 
    System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +50 
    System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +7 
    System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22 
    System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +60 
    System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9 
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8897857 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184 


    public ActionResult EditDetails() 
    { 
     int id = Convert.ToInt32(Session["user"]); 
     S1_Customers u1_users = storeDB.S1_Customers.Find(id); 
     return View(u1_users); 
    } 

    [HttpPost] 
    public ActionResult EditDetails(S1_Customers u1_users) 
    { 
     var Pcode = ""; 
     if (ModelState.IsValid) 
     { 

내가

+2

모델 코드를 게시, 당신은 ..이 저장 호출하고 작업이 검증에 일부 문제가있는 것 같다,하지만 더 정보가 필요하세요 .... 왜이 질문은 하향셨어요 투표? –

답변

24

당신을 변경 했 제출을 클릭하면 이름? 양식 이름은 1-1을 작업 매개 변수와 매핑해야합니다. 이 경우 "name"매개 변수가 컨트롤러 조치에 전달되지 않으므로 null입니다.

추측, 그것은 아마도 모델이 아닌 널 (NULL) 값을 반환하는 속성을 가지고있을 수 자세한 내용은 (행동의 메소드 서명)

+10

Ahh yeh 어리석은 내가 이것을했기 때문에 ... [Display (Name = "")] public string Addrs {get; 세트; } – Beginner

+0

:) 잘 된 것을 기쁘게 생각합니다. –

+5

동일한 문제인지 확실하지 않지만 StringLength 특성을 가진 멤버를 적용하고 [DisplayName ("")]을 적용해도 동일한 예외가 발생합니다. –

2

필요 int, DateTime, double 등과 같은 사용자의 경우 숨겨진 필드 또는 어딘가에 해당 값을 저장하지 않을 것 같은 항목을 업데이트 중이므로 데이터가 반환되면 해당 속성이 null입니다. 당신이 빈 이름으로 DisplayAttribute 장식 일부 속성이있는 경우 등 재산 숨겨진 필드에 나 int로 INT를 변경하여 모델에서 속성 널 (NULL)을?

16

당신은 그 오류를 받게됩니다 것을 어느 곳 ([DisplayAttribute(Name = "", Description = "Any description")])

+0

이 답변을하기 전에 오랜 시간을 보냈다는 것을 믿을 수 없습니다. –

10

모델의 속성으로 [Display (Name = "")]를 사용하면 오류가 발생합니다. 이 문제를 해결하려면 빈 표시 이름 속성을 사용하지 않아야합니다.

[Display(Name = "")] //this line is the cause of error 
public string PromotionCode { get; set; } 
관련 문제