2013-04-17 78 views
0

類似於我昨天的問題,因爲它涉及瀏覽器的格式和Date類型的格式。自定義星期幾日期驗證需要實現或識別文化

Date validation allows invalid dates

我正在認真處理jQueryJavascriptMVC這可能是爲什麼我打磚牆不斷,因爲我不明白下一步該怎麼做。我正在創建一個簡單的假期申請。請求日期需要是工作日。

我昨天通過this,這裏是我的。

public class WeekdayAttribute : ValidationAttribute, IClientValidatable 
{ 
    public override bool IsValid(object value) 
    { 
    DateTime dt; 
    if (DateTime.TryParse(value.ToString(), out dt)) 
     return dt.DayOfWeek != DayOfWeek.Saturday && dt.DayOfWeek != DayOfWeek.Sunday; 
    else 
     return false; 
    } 

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) 
    { 
    yield return new ModelClientValidationRule() 
    { 
     ErrorMessage = ErrorMessage, 
     ValidationType = "weekdaydate" 
    }; 
    } 
} 

然後我在jQuery.validate.unobtrusive

$jQval.addMethod("weekdaydate", function(value, element, params) { 
    var day = new Date(value).getDay(); 
    return day != 0 && day != 6; 
}); 

這樣做的功能工作正常,在這個意義上,如果我輸入一個無效US日期,它會驗證罰款並呈現以下內容的消息。然而,它忽略了我的機器和瀏覽器是UK,類似於我之前問題中的驗證(似乎只允許*/*/*,其中*是數字)。

我的問題是,有沒有辦法強制我的日期是整個MVC網站的UK格式?我如何強制UK格式?

+1

你可以給看看momentjs,一個漂亮的圖書館輕鬆地操作使用javascript日期:見http://momentjs.com/docs/#/解析/字符串格式/和http://momentjs.com/docs/#/i18n/ – jbl

+1

@jbl我用過這個,謝謝:) – LukeHennerley

回答

0

@jbl's評論是一個偉大的呼喊。我已經修改了date驗證在jquery.validation.js是如下:

$jQval.addMethod("weekdaydate", function(value, element, params) { 
    var day = new moment(value, "DD-MM-YYYY").day(); 
    return day != 0 && day != 6; 
});