c# - 从任何地方发布有效的日期时间

标签 c# asp.net asp.net-mvc datetime datepicker

我想创建一个简单的 ASP.Net 表单,它将获取出生日期。 我有一个具有此属性的模型:

[DataType(DataType.Date)]
public DateTime? BirthDate{ get; set; }

在我看来(正在使用日期选择器):

@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" })

我的 javascript datepicker 上唯一的一个设置是:

format: 'L'

因为我想要没有时间的显示日期。

现在,由于验证错误,我无法保存:

The value '12/23/2000' is not valid for BirthDate.

现在,我知道,这是一个全局化错误...我需要在 <globalization> 中设置文化web.config 中的元素等... 但是,您是否注意到我没有设置任何格式(日期选择器格式“L”除外)? 我希望该表格从任何国家/地区的人那里获取生日,而不是特定的文化/格式等。

这可能吗?我该怎么做?

编辑:

  • 您使用的是哪个日期选择器?
    JQuery 一个,但这不是要求,我可以更改为任何可以轻松处理不同保存格式“yyyy-mm-dd”和显示格式的日期选择器。
  • 您的服务器位于哪个区域设置,您更喜欢哪种格式在 MVC 代码中工作并保存在数据库中?
    我不知道我的客户将在哪里托管该网站及其 AWS...我更喜欢与 en-us 合作。

最佳答案

假设您的日期选择器可以在 Date() js 对象中返回选定的日期。我建议将日期值转换为标准格式,如 ISO8601。因此,您要做的是在日期选择器上附加一个 onChange 事件,并将选定的 Date() 值转换为 ISO8601 格式。您可以将此转换后的值分配给一个隐藏字段(简单的 date.toISOString())。

MVC .net 解析器也理解 ISO8601 格式,因此当您的表单数据发布到服务器上时,它会被解析为正确的日期值。参见 this question还有。

我已经使用 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" );
<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" />

我使用了一个用于显示目的的输入控件,但你可以使用一个隐藏的输入。

希望对您有所帮助。

关于c# - 从任何地方发布有效的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41309556/

相关文章:

javascript - 在asp.net的每个页面上注入(inject)javascript

c# - 从 jquery ajax 调用 webmethod 和静态对象的问题

c# - Visual Studio 银光

c# - 是否可以通过命令提示符从 C# 运行 python 代码?

c# - 扩展选择模式、虚拟化和 IsSelected 绑定(bind)

c# - .Net MVC4 文化设置正确,但验证仍然是英语

c# - 如何订购 ScriptManager 的 Register Script 注册的脚本

.net - 在 Visual Studio 中调试时如何查看所有 session 键/值对?

.net - 从 asp.net 页面创建资源

jquery - 立即验证客户端的电子邮件字段