2011-09-21 34 views
28

Estoy tratando de cargar los datos de un usuario, edítelo y guárdelo. esto ha estado trabajando y no estoy muy seguro de lo que he cambiado, pero ahora que estoy recibiendo el siguiente error ...MVC3 El valor no puede ser nulo. Nombre del parámetro: valor

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

No estoy llegando incluso a ModelState.IsValid cuando hago clic en submit

+2

Por favor enviar su modelo de código, y la acción que está llamando para guardar esta .. Parece que hay algunos problemas con la validación, pero se necesita más información .... ¿Por qué esta pregunta conseguir un Down- ¿votar? –

Respuesta

24

¿Cambió cualquier nombres? Los nombres de los formularios tienen que mapear 1-1 con sus parámetros de Acción. En este caso, el parámetro "nombre" no se pasó a la acción del controlador, por lo que es nulo.

conjetura

salvaje, necesita más información (método de firma de la acción)

+10

Ahh sí, fue tonto porque fue porque hice esto ... [Mostrar (Nombre = "")] cadena pública Agregados {obtener; conjunto; } – Beginner

+0

:) me alegra que esté arreglado. –

+5

No estoy seguro de si se trata del mismo problema pero recibo la misma excepción si aplico un miembro con un atributo StringLength y también aplico [DisplayName ("")]. –

2

Es más probable podría ser que su modelo tiene una propiedad que devuelve un valor no anulable, como int, DateTime, double etc, y si el usuario está actualizando la entrada, probablemente no esté almacenando ese valor en un campo oculto o en algún otro lugar, por lo que cuando se devuelven los datos esa propiedad particular es nula. De cualquier lugar que la propiedad en un campo oculto o hacer su anulable propiedad en un modelo cambiando int a int ?, etc.

16

podrás recibir ese error si tiene algunas propiedades decoradas por DisplayAttribute con nombre vacío ([DisplayAttribute(Name = "", Description = "Any description")])

+0

No puedo creer que haya pasado tanto tiempo antes de llegar a esta respuesta. –

10

Si usa [Mostrar (Nombre = "")] en cuanto a las propiedades de su modelo, Esto causará el error que obtiene. Para resolver este problema, debe evitar usar el atributo de nombre de visualización vacío.

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