Greater Than or Equal To Today Date validation annotation in MVC3

不打扰是莪最后的温柔 提交于 2019-11-28 05:23:59
Buildstarted

Create a custom attribute.

public class CheckDateRangeAttribute: ValidationAttribute {
    protected override ValidationResult IsValid(object value, ValidationContext validationContext) {
        DateTime dt = (DateTime)value;
        if (dt >= DateTime.UtcNow) {
            return ValidationResult.Success;
        }

        return new ValidationResult(ErrorMessage ?? "Make sure your date is >= than today");
    }

}

code was written off the cuff so fix any errors :)

Matija Grcic

Use [Remote] for special validations, simple and easy:

Your model:

[Remote("ValidateDateEqualOrGreater", HttpMethod="Post", 
    ErrorMessage = "Date isn't equal or greater than current date.")]
public DateTime Date { get; set; }
//other properties

Your action:

[HttpPost]
public ActionResult ValidateDateEqualOrGreater(DateTime Date)
{
     // validate your date here and return True if validated
     if(Date >= DateTime.Now)
     {
       return Json(true);
     }
     return Json(false);    
}
stanly

Simple way to accomplish this task is using CompareValidator.

The code below uses AjaxControlToolKit's CalendarExtender. Copy the below code to your HTML directive

<asp:TextBox ID="txtCompletionDate" runat="server" CssClass="txtNormal"></asp:TextBox>
                        <cc1:CalendarExtender ID="CalendarExtender1" TargetControlID="txtCompletionDate"
                            Format="dd/MM/yyyy" runat="server">
                        </cc1:CalendarExtender>
                        <asp:RequiredFieldValidator ID="rfvCompletionDate" runat="server" ControlToValidate="txtCompletionDate"
                            CssClass="labelError" ErrorMessage="*"></asp:RequiredFieldValidator>
                        <asp:CompareValidator ID="cvDate" runat="server" ControlToCompare="hiddenbox" ErrorMessage="*"
                            ControlToValidate="txtCompletionDate" CssClass="labelError" ToolTip="Completion  Date should be greater than or equal to Today"
                            Operator="GreaterThanEqual" Type="Date"></asp:CompareValidator>                        
                        <asp:TextBox ID="hiddenbox" runat="server" CssClass="hiddenbox">
</asp:TextBox>

add the below line in the CSS

.hiddenbox {display:none;}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!