我正在使用kendo datePickerFor 代码进入模型=====
[DataType(DataType.Date)]
[Display(Name = "Date:")]
[DisplayFormat(DataFormatString = "{0:MM-dd-yyyy}",
ApplyFormatInEditMode = true)]
public DateTime TransactionDate { set; get; }
进入视图页面====
@(Html.Kendo().DatePickerFor(m => m.TransactionDate)
.Format("MM-dd-yyyy")
.ParseFormats(new List<string>()
{
"MM-dd-yyyy"
})
)
也可以使用javascript ====
$(function () {
kendo.culture("en-US");
})
我的kendo DatePickerFor位于表单中。 当我提交表格给出错误时 - &#34;价值&#39; 09-16-2016&#39;对于日期无效:。&#34; 我的本地机器日期格式为&#34; dd-MM-yyyy&#34;。 当我将此格式设置为datepicker时,表单正确提交。 但我想设置不依赖于本地机器格式的特定格式 请告诉我如何解决这个问题。
答案 0 :(得分:0)
通常,您希望匹配客户端和服务器上的文化:
http://docs.telerik.com/kendo-ui/aspnet-mvc/globalization#match-cultures
可以设置服务器端文化,具体取决于浏览器请求中提供的区域信息。
https://developer.mozilla.org/en-US/docs/Web/HTTP/Content_negotiation
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language
如果有正当理由不这样做,那么您必须手动处理以服务器预期的正确格式提交日期值。
答案 1 :(得分:0)
我有类似的问题-我发现的最佳描述(但不是解决方案)在这里:https://blog.gerardbeckerleg.com/posts/kendo-ui-mvc-grid-datepicker-in-line-and-in-cell-edit-validation-error-the-value-is-not-valid/
我的本地机器文化日期格式为dd.MM.yyyy,在我的多语言应用程序中,我想始终强制使用一种日期格式:yyyy-MM-dd,所以我添加了(从不显示本地日期格式)
@(Html.Kendo().DatePickerFor(m => m.TransactionDate)
.Format("yyyy-MM-dd"))
当我使用In-Line版本时,仅在kendo网格内保存更改时发生问题,并且仅用于本地机器文化,这不允许以月初格式进行保存。当我以yyyy-MM-dd格式输入日期时,接受此更改后,它以某种方式交换了月份和日期,而我的日期2020-01-05-(1月5日)保存为2020-05-01(5月1日)。并且当一天> 12时发生与您相同的错误(例如,对于日期2020-12-31-12月31日,它无法每月更改31个信息,而我得到了错误:“值31.12.2020对日期无效) ” 在错误消息中,给定的格式与我的本地计算机文化完全相同(dd.MM.yyyy-> 31.12.2020),但是发生了错误,因此该日期被视为MM.dd.yyyy,因此该格式31.12.2020确实无效
奇怪的是,当我从客户端计算机运行相同的应用程序(但与我的本地文化相同)时,以及在本地计算机上的VS中进行调试(在本地计算机上,我无法重现错误)时,我注意到了不同的行为在客户端计算机上)
我做了什么?
var customCulture = $.extend(true, kendo.culture(), {
calendars: {
standard: {
patterns: {
d: "yyyy-MM-dd",
g: "yyyy-MM-dd HH:mm",
G: "yyyy-MM-dd HH:mm:ss"
}
}
}
}
);
解决方案的想法来自此处:https://www.telerik.com/forums/calendar-customization-764d6343160b