Asp.Net MVC DateTime文化问题

时间:2014-12-08 23:21:16

标签: asp.net asp.net-mvc datetime culture

我试图在UI上显示月份和年份,而不是日期。如果我没有明确指定文化,这将成为日期的问题。如果更改服务器区域设置,这会中断吗?在这种情况下我该如何管理?编写以下代码的更好方法是什么?

[DisplayName("Delivery Month")]
public string DeliveryMonth
{
    get
    {
        return DeliveryDate.ToString("Y");
    }
    set
    {
        DeliveryDate = DateTime.Parse("1." + this.DeliveryMonth);
    }
}

public DateTime DeliveryDate { get; set; } 

1 个答案:

答案 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));