Ich versuche zu bekommen, was ich denke, ist ein einfaches Beispiel der Verwendung von DataAnnotations auf einem Modell, um die Client-Seite Validierung auch zu fahren.DataAnnotations treibende clientseitige Validierungsproblem
Hier ist mein Modell ...
public class Person
{
[Required(ErrorMessage = "First Name Required")]
public string FirstName { get; set; }
[Required(ErrorMessage = "Last Name Required")]
public string LastName { get; set; }
}
Hier mein Controller ist ...
public class FriendsController : Controller
{
public ActionResult Create()
{
Person newFriend = new Person();
return View(newFriend);
}
[HttpPost]
public ActionResult Create(Person friendToCreate)
{
if (ModelState.IsValid)
{
// todo -- do something here
return Redirect("/");
}
// Invalid - redisplay form with errors
return View(friendToCreate);
}
}
und hier meiner Meinung nach ...
ist@model MvcApplication4.Models.Person
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.4.4.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcValidation.js")" type="text/javascript"></script>
</head>
<body>
<h2>
Create</h2>
@{Html.EnableClientValidation();}
@using (Html.BeginForm())
{
<fieldset>
<p>
@Html.LabelFor(m => m.FirstName)
@Html.TextBoxFor(m => m.FirstName)
@Html.ValidationMessageFor(m => m.FirstName)
</p>
<p>
@Html.LabelFor(m => m.LastName)
@Html.TextBoxFor(m => m.LastName)
@Html.ValidationMessageFor(m => m.LastName)
</p>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
</body>
</html>
Die Server-Seite Die Validierung funktioniert einwandfrei und die Validierungsfehlermeldungen werden wie erwartet angezeigt. Ich bekomme jedoch nicht die Client-Seite Validierung zu arbeiten. Gibt es etwas Offensichtliches, dass ich vermisse, um die clientseitige Validierung erscheinen zu lassen?
Danke für die schnelle Antwort. Und ich habe gerade Brads Artikel gelesen, danke für den Link. Er beschrieb das genaue Problem, das ich hatte. Stellt sich heraus, wenn ich die MS-Skripts von oben entfernen und stattdessen jquery.validate.js und jquery.validate.unobtrusive.js enthalten, dann funktioniert die clientseitige Validierung einwandfrei! Es scheint für MVC3, dass die MS-spezifischen Sachen der JSON-Implementierung weichen. Freut mich zu sehen, dass MS in diese Richtung geht, anstatt zu versuchen, den ganzen Apfel alleine zu essen. –
Gern geschehen. Froh, dass es geholfen hat! – Lorenzo