Ich habe einen wirklich einfachen Code erstellt CustomValidations zu testen, aber es funktioniert nicht:DataAnnotations CustomValidation funktioniert nicht
Validation
using System.ComponentModel.DataAnnotations;
using System.Text.RegularExpressions;
namespace UniversidadeCorporativa.Util
{
public class CustomDDD : ValidationAttribute
{
private Regex _regex = new Regex(@"^[1-9]{2}$");
public override bool IsValid(object value)
{
if (_regex.IsMatch(value.ToString()))
{
return true;
}
return false;
}
}
Ansichtsmodell
using UniversidadeCorporativa.Util;
using System.ComponentModel.DataAnnotations;
namespace UniversidadeCorporativa.ViewModels
{
public class TesteViewModel
{
public TesteViewModel()
{ }
[Required]
[CustomDDD]
[Display(Name = "DDD")]
public int DDDCel { get; set; }
[Required]
[Display(Name = "Celular")]
public int Celular { get; set; }
}
}
-Controller
using UniversidadeCorporativa.ViewModels;
public ActionResult Teste()
{
return View();
}
[HttpPost]
public ActionResult Teste(TesteViewModel model)
{
try
{
return RedirectToAction("Teste");
}
catch
{
return View();
}
}
View
@model UniversidadeCorporativa.ViewModels.TesteViewModel
@{
ViewBag.Title = "Teste";
}
<h2>Teste</h2>
@using (Html.BeginForm("Teste", "Universidade", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.AntiForgeryToken()
@*@Html.ValidationSummary("", new { @class = "text-danger" })*@
<div class="form-group">
@Html.LabelFor(m => m.Celular, new { @class = "col-md-2 control-label" })
<div class="col-md-2">
@Html.TextBoxFor(m => m.DDDCel, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.DDDCel)
</div>
<div class="col-md-8">
@Html.TextBoxFor(m => m.Celular, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Celular)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" class="btn btn-default" value="Teste" />
</div>
</div>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
Nichts ist validiert, wenn die Eingabe eingereicht wird und ich habe keine idea warum. Kann jemand helfen?
Wohin soll die Validierung ausgeführt werden? Ich sehe keinen Code, der eine Validierung durchführt. (Ich sehe nicht, dass Sie den Controller für 'ModelState.IsValid' einchecken, noch sehe ich ein Javascript, das die Validierung durchführt). –
MVC hat bereits ein 'RegularExpressionAttribute' (welches Client- und Serverseitige Validierung ermöglicht). Warum versuchst du das Rad neu zu erfinden? (Und Sie können dieses Attribut immer erweitern, so dass die Regex darin eingebaut ist und Sie können nur '[CustomDDD]' anstelle von '[RegularExpression (@"^[1-9] {2} $ ")]' verwenden –