Проверка jQuery и ASP.NEt MVC: предотвращение проверки на сервере - PullRequest
2 голосов
/ 17 мая 2011

У меня есть модель, которая выглядит следующим образом:

public class Lesson
{
    public int Id { get; set; }

    [Required(ErrorMessage = "Naam voor de les is verplicht")]
    [Display(Name="Naam")]
    public string Name { get; set; }

    [Required(ErrorMessage = "Tijd is verplicht")]
    [Display(Name="Tijd")]
    public string Time { get; set; }

    //Prijs is default exclusief BTW
    [Required(ErrorMessage = "Prijs is verplicht")]
    [Display(Name="Prijs (excl btw)")]
    public double Price { get; set; }

    [Display(Name = "Maximum aantal leerlingen")]
    public int MaxStudents { get; set; }
}

И представление создания, которое выглядит так:

<div>
    <div>
        @Html.LabelFor(model => model.Name)
    </div>
    <div>
        @Html.TextBoxFor(model => model.Name, new { @class = "gt-form-text" })
        @Html.ValidationMessageFor(model => model.Name)
    </div>
    <div>
        @Html.LabelFor(model => model.Time)
    </div>
    <div>
        @Html.TextBoxFor(model => model.Time, new { @class = "gt-form-text" })
        @Html.ValidationMessageFor(model => model.Time)
    </div>
    <div>
        @Html.LabelFor(model => model.Price)
    </div>
    <div>
        @Html.TextBoxFor(model => model.Price, new { @class = "gt-form-text" })
        @Html.ValidationMessageFor(model => model.Price)
     </div>
     <div>
         @Html.LabelFor(model => model.MaxStudents)
     </div>
     <div>
         @Html.TextBoxFor(model => model.MaxStudents, 
             new { @class = "gt-form-text" })
         @Html.ValidationMessageFor(model => model.MaxStudents)
     </div>
 </div>

В методе Application_Start() я установил DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes в ложь.

MaxStudents обнуляем и не требуется, тем не менее, если MaxStudents равно нулю, Modelstate недействителен (ModelState.IsValid = false).

Мое сообщение об ошибке не отображается, вместо этого я получаю сообщение об ошибке A value is required.

Что я могу сделать, чтобы ModelState.IsValid было верным?

1 Ответ

0 голосов
/ 25 мая 2011

Кто-то поделился этим со мной, и я передам это на случай, если это поможет.Иногда эти ошибки валидации проглатываются и их трудно найти.Когда у меня возникла похожая проблема, я добавил этот код в свой ActionResult (HttpPost), и это дало мне право на данную ошибку.

            try
        {
            db.Entry(myModel).State = EntityState.Modified;
            db.SaveChanges();

        }
        catch (DbEntityValidationException dbEx)
        {
            foreach (var validationErrors in dbEx.EntityValidationErrors)
            {
                foreach (var validationError in validationErrors.ValidationErrors)
                {
                    Trace.TraceInformation("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage);
                }
            }
        }           // }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...