2014-01-22 7 views
0

Я использовал 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*")); 

ответ

1

Что касается DataAnnotations не работает, моя ошибка была в том, что частичный класс был назван MetaCase вместо случая.

Для ненавязчивой проверки не работает, я ссылался на jqueryval js, но не на jquery.unobtrusive в моем пакете. Вот как это должно выглядеть:

  bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
           "~/Scripts/jquery.unobtrusive*", 
           "~/Scripts/jquery.validate*")); 
Смежные вопросы