Einige Validierungen können ausschließlich Server-seitig erfolgen. Ein Beispiel dafür ist eine Prüfung gegen bestimmte Datensätze in einer Datenbank. Damit diese Validierungen auch bereits am Client vor dem Absenden der Daten erfolgen können, bietet ASP.NET MVC 3 die Möglichkeit, sie via AJAX anzustoßen. Im Hintergrund kommt dabei jQuery zum Einsatz.
Um von dieser Möglichkeit Gebrauch zu machen, wird zunächst eine Action-Methode, welche den zu validierenden Wert entgegennimmt, bereitgestellt. Optional kann diese Methode auch noch weitere Werte, die gemeinsam mit dem zu validierenden Wert erfasst werden, erwarten. Diese Action-Methode führt die Validierung durch und liefert je nachdem, ob die Validierung erfolgreich war oder nicht, true oder false in Form von JSON retour.
public ActionResult ValidateTitle(string title, string text)
{
if (title == null) title = "";
if (text == null) text = "";
if (title == "Unknown Title")
return Json(false, JsonRequestBehavior.AllowGet);
if (text == title)
return Json(false, JsonRequestBehavior.AllowGet); ;
return Json(true, JsonRequestBehavior.AllowGet);;
}
Anschließend kann das zu validierende Feld mit Remote annotiert werden. Im betrachteten Fall werden der Name der Action-Methode sowie der Name des Controllers übergeben. Alternativ dazu erlauben weitere Überladungen die Übergabe eines Routennamens. Zusätzlich wird die im Falle einer fehlgeschlagenen Validierung anzuzeigende Fehlermeldung, die zu verwendende HTTP-Methode und eventuelle weitere Felder, die an die Validierungsmethode zu übermitteln sind, übergeben. Letzteres funktioniert im RC 2 anscheinend (noch) nicht.
public class News
{
[Remote("ValidateTitle", "News",
ErrorMessage = "Titel ist ungültig!",
HttpMethod = "POST",
AdditionalFields= "Text")]
public string Title { get; set; }
[AllowHtml]
public string Text { get; set; }
}