2011-09-21 18 views
28

Próbuję załadować dane użytkownika, edytuj je, a następnie zapisz. to pracuje i nie jestem pewien, co zmieniłem, ale teraz otrzymuję następujący błąd ...Wartość MVC3 nie może być pusta. Nazwa parametru: wartość

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

ja nie osiągając nawet ModelState.IsValid po kliknięciu złożyć

+2

Proszę wysłać kod modelu, a akcja dzwonisz, aby zapisać to .. Wydaje istnieją pewne problemy z walidacji, ale potrzeba więcej informacji .... Dlaczego to pytanie uzyskać puchu głosować? –

Odpowiedz

24

Czy zmienić dowolny nazwy? Nazwy formularzy muszą być odwzorowane na 1-1 z parametrami Akcji. W tym przypadku parametr "name" nie został przekazany do akcji kontrolera, więc jest pusty.

Dzikie przypuszczenie, potrzebujemy więcej informacji (sposób działania) podpis

+10

Ahh yeh głupi mnie to było, ponieważ zrobiłem to ... [Display (Name = "")] public string Addrs {get; zestaw; } – Beginner

+0

:) Dobrze się z tym wiąże. –

+5

Nie jestem pewien, czy jest to ten sam problem, ale otrzymuję ten sam wyjątek, jeśli zastosuję element członkowski z atrybutem StringLength, a także zastosuję [DisplayName ("")]. –

2

To może być to, że najprawdopodobniej model ma właściwość, która zwraca wartość spoza zerowalne, jak int, DateTime, double itp A jeśli użytkownik aktualizuje wpis, prawdopodobnie nie przechowujesz tej wartości w ukrytym polu lub gdzieś, więc gdy dane zostaną zwrócone, ta właściwość ma wartość null. Albo miejsce, że własność w ukrytym polu lub dokonać pustych nieruchomości w modelu zmieniając int int ?, itp

16

Otrzymasz ten błąd, jeśli masz jakieś właściwości urządzone przez DisplayAttribute z pustym Nazwa ([DisplayAttribute(Name = "", Description = "Any description")])

+0

Nie mogę uwierzyć, że spędziłem tak dużo czasu przed przyjściem na tę odpowiedź. –

10

Jeśli użyjesz [Wyświetl (Name = "")] jak dla właściwości twojego modelu, spowoduje to błąd. Aby rozwiązać ten problem, należy unikać używania pustego atrybutu wyświetlanej nazwy.

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