Пользовательская проверка DateTime в ASP .NET - MVC - PullRequest
1 голос
/ 23 апреля 2011

Я пытаюсь реализовать новые правила валидации в моем MVC-проекте, но я не стану validation-errormsg, на мой взгляд.Что не так с кодом?Я много гуглюл и думал, что все сделал правильно -.-

WebConfig:

<appSettings>
  <add key="ClientValidationEnabled" value="true"/> 
  <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
</appSettings>

Модель:

public class Model1 : IValidatableObject
{
    [Required]
    [DisplayFormat(DataFormatString="{d:0}", ApplyFormatInEditMode=true)]
    public DateTime Wunschtermin { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (Wunschtermin < DateTime.Now) yield return new ValidationResult("error1!", new[] { "Wunschtermin" });
        if (Wunschtermin.Date > DateTime.Today.AddYears(2)) yield return new ValidationResult("error2", new[] { "Wunschtermin" });
    }
    ...

Вид:

@model TestMvcApplication.Models.Model1

<h2>Create</h2>

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
    ...
        <div class="editor-field">
            @Html.EditorFor(model => model.Wunschtermin)
            @Html.ValidationMessageFor(model => model.Wunschtermin)
        </div>
    ...

Редактировать:

Может быть, я могу переопределить атрибут RangeAttribute и избежать проблемы:

[Range (DateTime.Now, DateTime.Today.AddYears(2))]

полезно?

1 Ответ

1 голос
/ 24 апреля 2011

решил это сам, код в контроллере был неверен:

    [HttpPost]
    public ActionResult Create(FormCollection collection)

с небольшим изменением:

    [HttpPost]
    public ActionResult Create(Model1 collection)

хорошо работает: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...