在ASP.NET中自定义日期时间验证 - MVC
问题描述:
我尝试在我的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))]
有用吗?
答
已经解决了它自己,在这个控制器里的代码是错误的:
[HttpPost]
public ActionResult Create(FormCollection collection)
与SMaL公司的变化:
[HttpPost]
public ActionResult Create(Model1 collection)
它工作得很好:-)