我已经看到了大约1k的帖子,但我一定错过了什么。
基本上,我正在尝试在我的网站中使用dd / MM / yyyy格式,验证时会出现问题。
我是一个ViewModel:
public class LoanBaseViewModel
{
public int LoanId { get; set; }
[Required]
[DataCompareValidation("ReturnDate", ErrorMessage = "Return date should be later than loan date")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime LoanDate { get; set; }
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
[DataType(DataType.Date)]
public DateTime? ReturnDate { get; set; }
}
在我的编辑模板中我已经:
@model System.Nullable<System.DateTime>
@if (Model.HasValue)
{
@Html.TextBox("", String.Format("{0:dd/MM/yyyy}", Model.Value), new { @class = "jq-date" })
}
else
{
@Html.TextBox("", "", new { @class = "jq-date" })
}
在页面上加载我在jq-date上附加一个Jquery DatePicker。
$("#loanForm").find(".jq-date").datepicker({ dateFormat: 'dd/mm/yy' });
显示效果很好,但每次我尝试保存时,如果我使用dd / MM / yyyy日期,它会告诉我日期格式不正确。
知道为什么吗?
我已经尝试了一个小时而且它让我疯了!
感谢您的时间
汤姆
修改 没有更好的工作 真正奇怪的是,它确实可以在我的笔记本电脑上运行,但不能在我的桌面上,它们都是dd / MM / yyyy的显示日期,我的笔记本电脑接受25/08/2013而不是我的桌面......
修改 解决方案如下:stackoverflow.com/a/13528769/1741443。
答案 0 :(得分:2)
如果没有看到你如何格式化jQuery datepicker,它有点难以肯定地回答。 jq-date的默认返回值为mm / dd / yy(所有数值数据)。
您设置的格式是与字段相关的格式;正在等待jQuery以其期望的格式传递日期的字段。字段级格式化不适用于jQuery - 这是一个单独的格式化要求。
我建议您将ApplyFormatInEditMode设置为off / false,并查看日期字段是否与datepicker一起正常工作。
如果不起作用,请根据以下内容格式化jq-date。
有关Datepicker格式选项的详细信息,请查看API documentation或转到this page
我确定您已经在页面上引用了jQuery和Jquery UI,但是您应该为该datepicker包含以下自定义:
<script type="text/javascript">
$(function(){
$('.datepicker').datepicker({dateFormat: 'dd-M-yy'});
});
</script>
在上面的示例中,jQuery格式返回dd - 一个月中的两位数日,M - 月份的短名称,以及yy - 四位数年份。
希望有所帮助。
答案 1 :(得分:1)
这可能是datepicker格式的问题。你可以在这样的初始化时设置它
var dateTypeVar = $('#datepicker').datepicker('getDate');
$.datepicker.formatDate('dd-mm-yy', dateTypeVar);
您还可以设置默认日期时间格式。以下是包含更多信息的链接
答案 2 :(得分:1)
假设您的服务器文化未设置为您要使用的文化格式,则需要将web.config中的全球化设置设置为您计划使用的文化。我不知道你来自哪里,但我会假设英国。所以你可以设置
<globalization culture="en-GB"/>
这应该在<system.web>
您还可以使用culture="auto"
,在这种情况下,将根据用户浏览器文化设置选择文化。
执行此操作并使用[DataType]
属性时,您甚至不需要使用[DisplayFormat]
属性。
您也可以考虑使用HtmlAttributeProvider
将jq-date属性添加到日期类型中,然后根本不需要编辑器模板。参见:
如果您的问题严格在客户端使用jquery日期控件,那么请确保您在jquery ready处理程序中初始化它(并且您不需要表单id或find,只需使用该类在jquery选择器本身)。
$(function() {
$(".jq-date").datepicker({ dateFormat: 'dd/mm/yy' });
});
答案 3 :(得分:0)
将以下代码添加到global.asax.cs文件
protected void Application_BeginRequest(){
CultureInfo info = new 的CultureInfo(System.Threading.Thread.CurrentThread.CurrentCulture.ToString()); info.DateTimeFormat.ShortDatePattern =&#34; dd / MM / yyyy&#34 ;; System.Threading.Thread.CurrentThread.CurrentCulture = info;
}
并将以下内容添加到&lt; system.web&gt;
下的 web.config&lt; worldwide culture =&#34; en-US&#34; /&GT;