2011-04-23 58 views
1

我嘗試在我的MVC項目中實現新的validationrules,但我不會成爲我認爲的驗證errormsg。 代碼有什麼問題?我有很多googlet以爲我已經做了所有正確的-.-在ASP.NET中自定義日期時間驗證 - MVC

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> 
    ... 

編輯:

也許我可以覆蓋e RangeAttribute並避免該問題:

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

有用嗎?

回答

1

已經解決了它自己,在這個控制器裏的代碼是錯誤的:

[HttpPost] 
    public ActionResult Create(FormCollection collection) 

與SMaL公司的變化:

[HttpPost] 
    public ActionResult Create(Model1 collection) 

它工作得很好:-)