Toujours en beta, voir même proof of concept, j'ai publié une nouvelle version de SimpleValidation.NET, supportant ASP.NET MVC (Preview 4). La validation côté client se fait avec jquery.validation (http://docs.jquery.com/Plugins/Validation).
Pour le moment, seul les validators "required" et "email" sont implémentés coté client. Les autres viendront par la suite !
Le tout se télécharge ici : http://www.codeplex.com/SimpleValidation
Simple à utiliser, tout ce que vous avez à faire :
Créez votre entité
public class User
{
private string name;
private int age;
private string email;
private string password;
private decimal size;
[Required("Name is required")]
public string Name
{
get { return this.name; }
set { this.name = value; }
}
[Required("Age is required")]
[Range(0, 99, "Age must be in range {0} {1}")]
[ValidateType("Age format is not valid")]
public int Age
{
get { return this.age; }
set { this.age = value; }
}
[ValidateType("Size format is not valid")]
public decimal Size
{
get { return this.size; }
set { this.size = value; }
}
[Email("Email is invalid")]
[Confirm("Please confirm your email")]
[Required("Email is required")]
public string Email
{
get { return this.email; }
set { this.email = value; }
}
[Confirm("Please confirm your password")]
[Required("Password is required")]
public string Password
{
get { return this.password; }
set { this.password = value; }
}
}
Plutot explicite :)
Créez une vue
<%=Html.CreateValidators<Samples.Entities.User>("signupForm")%>
<%using( Html.Form("User", "New", FormMethod.Post, new Dictionary<string, object>() { { "id", "signupForm"} } ) ) { %>
<div class="inputform">
<fieldset>
<legend>
User
</legend>
<label>Name:</label>
<div class="droite">
<%= Html.TextBox("Name", ViewData["Name"] as string) %>
<%= Html.ValidationErrors("Name") %>
</div>
<label>Password:</label>
<div class="droite">
<%= Html.TextBox("Password")%>
<%= Html.ValidationErrors("Password")%>
</div>
<label>Confirm Password:</label>
<div class="droite">
<%= Html.TextBox("PasswordConfirm")%>
<%= Html.ValidationErrors("PasswordConfirm")%>
</div>
<label>Age:</label>
<div class="droite">
<%= Html.TextBox("Age", ViewData["Age"] as string)%>
<%= Html.ValidationErrors("Age")%>
</div>
<label>Size:</label>
<div class="droite">
<%= Html.TextBox("Size", ViewData["Size"] as string)%>
<%= Html.ValidationErrors("Size")%>
</div>
<label>Email:</label>
<div class="droite">
<%= Html.TextBox("Email", ViewData["Email"] as string)%>
<%= Html.ValidationErrors("Email")%>
</div>
<label>Confirm Email:</label>
<div class="droite">
<%= Html.TextBox("EmailConfirm", ViewData["EmailConfirm"] as string)%>
<%= Html.ValidationErrors("EmailConfirm")%>
</div>
<div class="droite boutons">
<input type="submit" value="Register" />
</div>
</fieldset>
</div>
<%} %>
N'oubliez pas de referencer les js de jquery (http://jquery.com/) et jquery.validation (http://docs.jquery.com/Plugins/Validation) dans votre vue.
Créez votre controller
public class UserController : Controller
{
public ActionResult Index()
{
return View("New");
}
public ActionResult New()
{
User u = new User();
if (!MvcValidationHelper.UpdateFrom(u, Request.Form, ViewData))
{
return View();
}
return View("UserCreated", u);
}
}
Et voila!