Cli*_* Ok 6 c# asp.net asp.net-mvc datetime datepicker
我想创建一个简单的ASP.Net表单,它将获得出生日期.我有一个具有此属性的模型:
[DataType(DataType.Date)]
public DateTime? BirthDate{ get; set; }
Run Code Online (Sandbox Code Playgroud)
在我看来(正在使用datepicker):
@Html.LabelFor(model => model.BirthDate)
@Html.TextBoxFor(model => model.BirthDate, new { @class = "form-control date-picker" })
@Html.ValidationMessageFor(model => model.BirthDate, "", new { @class = "text-danger" })
Run Code Online (Sandbox Code Playgroud)
我的javascript datepicker上唯一一个设置是:
format: 'L'
Run Code Online (Sandbox Code Playgroud)
因为我想要没有时间的展示日期.
现在,我无法保存,因为验证错误:
值'12/23/2000'对BirthDate无效.
现在,我知道,它是一个全球化错误......我需要<globalization>
在web.config等元素中设置文化...但是,你注意到我没有设置格式(除了datepicker格式"L")?我希望这种形式能够从任何国家的人们那里获得生日,没有具体的文化/形式等.
这可能吗?我该怎么做?
编辑:
假设您的日期选择器可以在Date()js对象中返回所选日期.我建议将日期值转换为ISO8601等标准格式.因此,您需要做的是在日期选择器上附加onChange事件,并将选定的Date()值转换为ISO8601格式.您可以将此转换后的值分配给隐藏字段(只需date.toISOString()).
MVC .net解析器也理解ISO8601格式,因此当您的表单数据发布在服务器上时,它会被解析为正确的日期值.也看到这个问题.
我使用jquery UI datepicker创建了一个jsfiddle.它使用altFormat和altField,它可以用于内部日期格式,而不管在实际日期输入字段中向用户显示的日期格式如何.
在这里找到jsfiddle - https://jsfiddle.net/Prasoon1983/kyjvwkLd/2/
$("#dob").datepicker({
altFormat: "yy-mm-dd",
altfield:"#dobInternal"
});
$( "#dob" ).datepicker( "option", "altField", "#dobInternal" );
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<input type="text" id="dob" />
<input type="text" id="dobInternal" />
Run Code Online (Sandbox Code Playgroud)
我使用输入控件进行显示,但您可以使用隐藏输入.
希望能帮助到你.
归档时间: |
|
查看次数: |
491 次 |
最近记录: |