Asp.net mvc JQuery日历和MVC日期时间提交
我们都知道在不同的UI文化中显示日期时所面临的问题。但是在发布时,我们也有这个问题,因为在发布时,ASP.NETMVC并没有真正自动地将给定的格式绑定到它认为合适的任何方式 我的问题是,如何以yyyy/MM/dd格式回传日期,以便它能够正确绑定到模型属性 我想在UI格式中显示文化的日期格式,即英国/美国等。。。并让用户像往常一样从jquery日历中选择日期。但只有在发布时,我才想进行更正Asp.net mvc JQuery日历和MVC日期时间提交,asp.net-mvc,jquery-ui,Asp.net Mvc,Jquery Ui,我们都知道在不同的UI文化中显示日期时所面临的问题。但是在发布时,我们也有这个问题,因为在发布时,ASP.NETMVC并没有真正自动地将给定的格式绑定到它认为合适的任何方式 我的问题是,如何以yyyy/MM/dd格式回传日期,以便它能够正确绑定到模型属性 我想在UI格式中显示文化的日期格式,即英国/美国等。。。并让用户像往常一样从jquery日历中选择日期。但只有在发布时,我才想进行更正 做这件事的最佳方法是什么?我遇到了同样的问题,通过为日期添加一个备用字段来解决它,并将其发送给控制器 助手:
做这件事的最佳方法是什么?我遇到了同样的问题,通过为日期添加一个备用字段来解决它,并将其发送给控制器 助手: HTML Razor视图: 这只是一个开始,一个关于如何实现预期结果的想法。当然,您需要实施更改来完成它并使其适合您的网站。
如何检测用户区域设置信息并将其应用到解决方案中则更为广泛和复杂。网络上有很多提示和教程。感谢您快速、友好的回复。问题:在哪里以及如何获取/初始化区域设置脚本?还有,altFormat-它是如何工作的?我的意思是,当页面发回控制器,以我想要的格式格式化日期时间,以便活页夹正确解析时,它会使用它吗?。最后-您引用的altField是什么?目前我只是这样:var dateFormatStr='yy/mm/dd'$'NextPayDate'。日期选择器{dateFormat:dateFormatStr};这显然不是我想要的。当用户在日期选择器上选择日期时,它将以您设置的YYYY-MM-DD格式填充备用字段。这两个字段都将发回控制器。在这里,你应该考虑隐藏字段作为您选择的数据。再次感谢,我会给这个BASH肯定,并给出反馈/标记作为答案。另一个问题:如何获取和加载区域性信息脚本?下载DatePicker库时,它附带了各种区域设置脚本。你可以看到我在PostRazor视图中加载了en GB。正如我所提到的,这是一种更宽的方式。我的解决方案比这更复杂。我正在使用另一个脚本来检测时区等。在本例中,区域性信息将返回语言:en GB、en US等。您只需要在脚本文件名中替换它。
public static CultureInfo UserCultureInfo()
{
// Retrieves the user culture info based on the browser request
var userLanguages = HttpContext.Current.Request.UserLanguages;
CultureInfo ci;
if (userLanguages.Length > 0)
{
try
{
ci = new CultureInfo(userLanguages[0]);
}
catch (CultureNotFoundException)
{
ci = CultureInfo.InvariantCulture;
}
}
else
{
ci = CultureInfo.InvariantCulture;
}
return ci;
}
@{
System.Globalization.CultureInfo curInfo = Helpers.UserCultureInfo();
}
<!-- You need to change the file to be loaded based on the Culture information returned above -->
@Html.Script("DatePicker/i18n/jquery.ui.datepicker-en-GB")
<!-- The hidden field should be the one posted back to the Controller -->
<input type="hidden" name="myDate" id="myDate" value="" />
<!-- This one is just to display the DatePicker -->
<input type="text" id="myDatePickerField" name="myDatePickerField" />
$("#myDatePickerField").datepicker({
altField: "#myDate",
altFormat: "yy-mm-dd", // The date sent will be in the YYYY-MM-DD format (refer to the HTML code to understand this bit)
dateFormat: "dd/mm/yy" // As I'm in the UK, I set the default format to DD/MM/YYYY
});