2017-05-12 7 views
-1

Ich bin neu in MVC und versuche, ein einfaches Antragsformular mit einem Kontrollkästchen zu tun, um die Bedingungen zu akzeptieren. Ich kann nicht verstehen, warum meine Fehlermeldung nicht angezeigt wird. Das ist mein .cshtmlMVC [Erforderlich] Attribut funktioniert nicht

<div class="form-row"> 
    <div class="validation-container">@Html.ValidationMessageFor(m => m.HasAcceptedTerms) 
    </div> 
    <div class="label-container">@Html.LabelFor(m => m.HasAcceptedTerms)</div> 
    <div class="form-control">@Html.EditorFor(m => m.HasAcceptedTerms)</div> 
</div> 

mein Ansichtsmodell

[Required(ErrorMessage = "Please indicate you have read the statements above before sending your request")] 
    [Display (Name = "Please tick to show you accept all the above statements")] 
     public bool HasAcceptedTerms 
    { 
     get; set; 
    } 

-Controller

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult AppForm(AppFormViewModel App) 
    { 

     if (ModelState.IsValid) 
     { 
      return View(); 
     } 

     return View(App); 
    } 

Wenn ich auf die Schaltfläche klicken, die Seite ohne Änderungen aktualisiert. Während des Debuggens ist die Model.Statefalse, also kann ich wirklich nicht verstehen, warum nichts passiert. Hat jemand irgendwelche Ideen?

+0

Jede Hilfe würde geschätzt werden !!! – Emily7687687

+0

Bitte beachten Sie, dass das Model-View-Controller-Tag für Fragen zum Muster steht. Es gibt ein bestimmtes Tag für die ASP.NET-MVC-Implementierung. –

Antwort

0

Als Werttyp, Ihre bool hat einen Standardwert von false - diese ist ein Wert und deshalb nicht erkannt bekommt als „fehlend“. Sie müssen überprüfen, dass der Wert true ist, anstatt erforderlich zu sein.

Sie könnten this Frage für einen Weg, dies zu erreichen.

+0

Oh ok, ich habe es nicht so gesehen. Wurde deshalb Model.State als falsch angezeigt, weil das Kontrollkästchen nicht aktiviert wurde? – Emily7687687

+0

@ user6950100 ja, das ist in etwa richtig, obwohl auch wenn es keine form control zu binden gab es immer noch als falsch durch. Im Grunde wird 'RequiredAttribute' Ihnen nicht geben, was Sie brauchen. – Oliver

Verwandte Themen