Display-Fehlermeldung auf der view vom controller asp.net mvc 5
Ich bin neu in web-Entwicklung und versuchen zu lernen ASP.Net MVC 5. Ich bin auf der Suche nach einem Datensatz in der Datenbank, wenn der Datensatz nicht gefunden wird, dann will ich die Anzeige einer Fehlermeldung für den Benutzer. Unten ist mein Versuch:
Controller
[HttpGet]
public ActionResult Search()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Search(ForgotPasswordMV viewModel)
{
if (Temp.Check(viewModel.Email))
return RedirectToAction("VerifyToken", new { query = viewModel.Email });
else
{
ViewBag.ErrorMessage = "Email not found or matched";
return View();
}
}
Anzeigen:
<p>@ViewBag.ErrorMessage</p>
ViewModel
public class ForgotPasswordMV
{
[Display(Name = "Enter your email"), Required]
public string Email { get; set; }
}
Aber ich habe irgendwo gelesen, dass sollte ich eine Eigenschaft meiner Ansicht Modell und legen Sie die Fehlermeldung auf, dass die Eigenschaft. Ich bin verwirrt, jetzt, wie zu erreichen, dass und wie die Fehlermeldung angezeigt, in der Ansicht dann? Und welches ist das empfohlene/beste Praxis?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist die beste Methode zum ändern der
ModelState
Wörterbuch-Eigenschaft des Controllers wie diese:Dann deiner Ansicht fügen Sie die Zeile unten neben Ihrer E-Mail-Feld;
[Required]
und dann schauen wirmodelstate.isvalid
dann können wir den Fehler abzufangen dort. Ist diesAddError
tun das gleiche unter der Haube, sondern mehr custom made?ModelState.AddModelError
helfen zu vermeiden, diese Art von Dingen.AddModelError
ist, zeigt, dass die Eigenschaft in unserem Modell, das wir zu binden, müssen diese Fehlermeldung. Freundlicherweise korrigieren Sie mich, wenn ich falsch bin. Aber trotzdem danke für die Antwort. 🙂@Html.ValidationSummary(true, "The following error has occured:")
if statement
für jede Eigenschaft ausdrücklich und halten Sie auf hinzufügen, um den ModelState.AddModelError?If(Temp.CheckEmail(viewModel.Email)
,if(Temp.CheckUserName(viewMode.username)
so weiter und so Fort.Richtig. Man könnte hinzufügen, die Fehlermeldung an, die Ihrer Ansicht Modell:
und dann setzen Sie diese Eigenschaft auf Ihre view-Modell und pass-view-Modell zu der Ansicht:
und schließlich in Ihre stark typisierte Ansicht verwenden Sie die Eigenschaft auf Ihrer Modell:
Also im Grunde hier wir ersetzen die Verwendung von
ViewBag
mit einer stark typisierten view-Modell.Als für mich akzeptiert anwser ist nicht die beste Praxis. Wir kümmern uns um alle Fehler in den Annotationen.
In unserem ViewModel wir geben
ErrorMessage
s für unsere Eigenschaften.In unserem controller
Und unsere Sicht