我试图在UI上显示月份和年份,而不是日期。如果我没有明确指定文化,这将成为日期的问题。如果更改服务器区域设置,这会中断吗?在这种情况下我该如何管理?编写以下代码的更好方法是什么?
[DisplayName("Delivery Month")]
public string DeliveryMonth
{
get
{
return DeliveryDate.ToString("Y");
}
set
{
DeliveryDate = DateTime.Parse("1." + this.DeliveryMonth);
}
}
public DateTime DeliveryDate { get; set; }
答案 0 :(得分:1)
在您的模型中,您可以将DeliveryDate设置为字符串
public string DeliveryDate { get; set; }
然后在你看来。您可以通过使用jQuery为模型添加一个将变成datetimepicker控件的文本框。
文本框的html:
<div>
@Html.TextBoxFor(model => Model.DeliveryDate,
new { @class = "DeliveryDatePicker", style = "width:50%;height:25px;background:transparent;padding:0;margin-left:5px;" })
@Html.ValidationMessageFor(model => model.DeliveryDate)
</div>
要放在文档加载函数中的jQuery:
$("#DeliveryDate").datepicker({ dateFormat: 'dd/mm/yy' });
datepicker的格式 - 您可以将其设置为您需要的任何格式 - 在您的情况下通过使用dateFormat(now.getMonth()+ 1)和dateFormat(now.getYear() - 100)函数来设置它。例如将其设置为jQuery中的完整日期,它将是:
$("#DeliveryDate").val(dateFormat(now.getDate()) + '/' + dateFormat(now.getMonth() + 1) + '/' + dateFormat(now.getYear() - 100));
在您的数据访问/存储库获取方法中,您需要将其作为字符串:
deliveryModel.DeliveryDate = Convert.ToDateTime(sqlDataReader["DELIVERYDATE"]).ToString("dd/MM/yyy");
当您发布更新时,请将其转换为数据访问方法中的datetime:
SqlParameter sqlParameter1 = sqlCommand.Parameters.AddWithValue("@DeliveryDate", Convert.ToDateTime(deliveryModel.DeliveryDate));