Dav*_*avy 46 c# model-view-controller asp.net-mvc date data-annotations
是否可以使用[Range]日期注释?
就像是
[Range(typeof(DateTime), DateTime.MinValue.ToString(), DateTime.Today.ToString())]
Run Code Online (Sandbox Code Playgroud)
Mar*_*way 61
我这样做是为了解决你的问题
public class DateAttribute : RangeAttribute
{
public DateAttribute()
: base(typeof(DateTime), DateTime.Now.AddYears(-20).ToShortDateString(), DateTime.Now.AddYears(2).ToShortDateString()) { }
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*ott 49
MSDN上的文档说您可以使用RangeAttribute
[Range(typeof(DateTime), "1/2/2004", "3/4/2004",
ErrorMessage = "Value for {0} must be between {1} and {2}")]
public datetime Something { get; set;}
Run Code Online (Sandbox Code Playgroud)
这是另一种解决方案。
[Required(ErrorMessage = "Date Of Birth is Required")]
[DataType(DataType.Date, ErrorMessage ="Invalid Date Format")]
[Remote("IsValidDateOfBirth", "Validation", HttpMethod = "POST", ErrorMessage = "Please provide a valid date of birth.")]
[Display(Name ="Date of Birth")]
public DateTime DOB{ get; set; }
Run Code Online (Sandbox Code Playgroud)
只需创建一个名为ValidationController的新MVC控制器,然后将此代码放在其中即可。关于“远程”方法的好处是,您可以利用此框架根据您的自定义逻辑来处理任何类型的验证。
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net.Mail;
using System.Web;
using System.Web.Mvc;
namespace YOURNAMESPACEHERE
{
public class ValidationController : Controller
{
[HttpPost]
public JsonResult IsValidDateOfBirth(string dob)
{
var min = DateTime.Now.AddYears(-21);
var max = DateTime.Now.AddYears(-110);
var msg = string.Format("Please enter a value between {0:MM/dd/yyyy} and {1:MM/dd/yyyy}", max,min );
try
{
var date = DateTime.Parse(dob);
if(date > min || date < max)
return Json(msg);
else
return Json(true);
}
catch (Exception)
{
return Json(msg);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
对于那些在您被迫以字符串形式写日期时很少发生的事情(使用属性时),我强烈建议使用ISO-8601表示法.这消除了关于01/02/2004是1月2日还是2月1日的任何混淆.
[Range(typeof(DateTime), "2004-12-01", "2004-12-31",
ErrorMessage = "Value for {0} must be between {1} and {2}")]
public datetime Something { get; set;}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43793 次 |
| 最近记录: |