2017-12-20 17 views
0
public IActionResult OnPost() { 
     if (ModelState.IsValid) { 
      \\ save it 
     } 
     return Page(); 
    } 

In meinem Rasierklingencode habe ich die obige Prüfung, ob das Modell gültig ist. Das funktioniert gut, wenn das Modell gültig ist, speichert es, wenn nicht, geht es zu return Page();, was die gesamte Dokumentation, die ich finden kann, sagt.ASP.Net Razorseitenvalidierung gibt keine Werte zurück

Das Problem ist, dass, wenn das Modell ungültig ist, die return Page(); die Seite neu lädt, so dass ich alle eingegebenen Werte verloren habe und keine der Validierungsnachrichten aus dem Modell geladen wurden.

Was sollte ich anstelle von return Page(); verwenden, um die Validierungsnachrichten anzuzeigen und die ungültigen Informationen zu behalten?

------------------- Bearbeiten mit Ansichtsmodell

Also mit diesem als meine OnPost

[BindProperty] 
public theVM.ModelinVM theVMInstance { get; set; } 
public IActionResult OnPost() { 
    if (ModelState.IsValid) { 
     \\ save it 
    } 
    return theVMInstance; 
} 

und dies ist der Ansicht Modell

public class theVM { 
    public IQueryable<originalModel> ModelinVM { get; set; } 

} 

return theVMInstance; sagt jetzt Cannot implicitly convert type 'theVM.ModelinVM' to 'Microsoft.AspNetCore.Mvc.IActionResult'.

Es wird ein IActionResult erwartet, also muss es damit nicht kompatibel sein?

Antwort

0

Es hat nicht funktioniert, weil ich nicht

<script src="~/lib/jquery/dist/jquery.js"></script> 
<script src="~/lib/jquery-validation/dist/jquery.validate.js"></script> 
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script> 
gestellt hatte

an der Spitze der. HTML-Seite.

Ich brauchte die OnPost() Methode nicht, die jQuery hat den Job für mich erledigt.

0

Erstellen Sie Ansichtsmodellobjekte, und wenn die Validierung fehlgeschlagen ist, geben Sie das Modellobjekt mit Werten zurück. Und Ansicht Modell objet zu OnPost (View-Modell) übergeben dann View-Modell-Objekt zurück

Angeführt Endwerte Ansicht Modellobjekt Razor binden mit

+0

Wenn ich versuche, bekomme ich 'Kann nicht implizit Typ' dbConnect.Models.theviewmodel 'in' Microsoft.AspNetCore.Mvc.IActionResult 'konvertieren. Eine explizite Konvertierung existiert (fehlt Ihnen ein Cast?) –

+0

Ja, Sie können das db-Modell nicht verwenden, da seine Ansicht Modelle abbilden müssen –

+0

Es erwartet ein 'IActionResult' also was auch immer ich übergebe, es sei denn es ist kompatibel, es funktioniert nicht gewonnen 't es ??? –

Verwandte Themen