Значение MVC3 не может быть нулевым.Имя параметра: значение - PullRequest
29 голосов
/ 21 сентября 2011

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

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, когда я нажимаю отправить

Ответы [ 5 ]

26 голосов
/ 21 сентября 2011

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

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

17 голосов
/ 20 июня 2013

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

11 голосов
/ 09 апреля 2014

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

[Display(Name = "")] //this line is the cause of error
public string PromotionCode { get; set; }
2 голосов
/ 21 сентября 2011

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

1 голос
/ 14 апреля 2018

Я получал то же сообщение об ошибке при ручной установке @Html.TextArea, я использовал код из @Html.TextBox(null, this.Model) в EditorTemplate, а когда я сделал @Html.TextArea(null, this.Model), я получил ошибку выше.

Оказывается, вы должны сделать @Html.TextArea("", this.Model), и это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...