Я использовал DataAnnotations в проектах MVC 4 и работает хорошо, включая проверку клиента.MVC 5 DataAnnotations не работает
Я начинаю проект MVC 5, но у меня возникают проблемы с DataAnnotations и валидацией. Проект MVC 4 не использовал Bootstrap, и этот новый использует Bootstrap 3, но я сомневаюсь, что это проблема. Даты не форматируются, и поле «Примечание» не требуется, даже если это указано. ModelState отображается корректно, даже если поле заметок пуст.
Мой взгляд
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
@Html.ValidationSummary(true)
<div class="form-group">
@Html.LabelFor(model => model.OnGoing, new
{
@class = "control-label col-md-2"
})
<div class="col-md-10">
@Html.EditorFor(model => model.OnGoing)
@Html.ValidationMessageFor(model => model.OnGoing)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Notes, new
{
@class = "control-label col-md-2"
})
<div class="col-md-10">
@*@Html.TextAreaFor(model => model.Notes, 10, 150, null)*@
@Html.EditorFor(model => model.Notes)
@Html.ValidationMessageFor(model => model.Notes)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
</div>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
web.config
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
частичный класс для DataAnnotations
[MetadataType(typeof(CaseFormatting))]
public partial class MetaCase
{
}
public class CaseFormatting
{
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
public DateTime CreatedDate
{
get;
set;
}
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
public DateTime UpdatedDate
{
get;
set;
}
[Required(ErrorMessage="required")]
public string Notes
{
get;
set;
}
}
Связки
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.validate*"));