Подтвердить что ты не робот

Значение MVC3 не может быть нулевым. Имя параметра: значение

Я пытаюсь загрузить данные пользователя, отредактировав его, а затем сохраните. это работает, и я не совсем уверен, что я изменил, но теперь я получаю следующую ошибку...

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)
        {

Я даже не добираюсь до ModelState.IsValid, когда я нажимаю submit

4b9b3361

Ответ 1

Вы меняли имена? Названия форм должны отображать 1-1 с вашими параметрами действия. В этом случае параметр "имя" не был передан в действие контроллера, поэтому он равен нулю.

Дикая догадка, нужна дополнительная информация (подпись метода действия)

Ответ 2

Вы получите эту ошибку, если у вас есть некоторые свойства, украшенные DisplayAttribute, с пустым именем ([DisplayAttribute(Name = "", Description = "Any description")])

Ответ 3

Если вы используете [Display (Name= "")] как для свойств вашей модели, это приведет к ошибке, которую вы получите. Чтобы решить эту проблему, вам следует избегать использования пустого атрибута отображаемого имени.

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

Ответ 4

Скорее всего, может быть, что ваша модель имеет свойство, которое возвращает значение, отличное от нуля, например, int, DateTime, double и т.д. И если пользователь обновляет запись, вы, вероятно, не сохраняете это значение в скрытом поле или где-нибудь, поэтому, когда данные возвращаются, это конкретное свойство равно null. Либо помещайте это свойство в скрытое поле или вы можете присвоить свойство null в модели, изменив int на int?, и т.д.