2014-12-08 3 views
0

Я пытаюсь показать месяц и год вместо даты в пользовательском интерфейсе. Будет ли это проблемой для даты, если я не укажу культуру явно. Будет ли это нарушено, если изменится локаль сервера? Как мне управлять в этом случае? Какой будет лучший способ написать приведенный ниже код?Asp.Net MVC DateTime culture issue

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

public DateTime DeliveryDate { get; set; } 
+1

Как вы его видите? Вы можете использовать '@ Html.TextBoxFor (m => m.DeliveryDate," {0: MM-yyyy} "), но он не будет привязан к сообщению. Вам нужно будет создать пользовательский «ModelBinder». –

ответ

1

В вашей модели, вы можете установить DeliveryDate как строка

public string DeliveryDate { get; set; } 

Тогда в вашем представлении. вы можете добавить текстовое поле для своей модели, которое превратится в элемент управления datetimepicker с помощью jQuery.

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

В вашем доступе к данным/хранилище метода GET, то вам нужно, чтобы получить его в виде строки:

deliveryModel.DeliveryDate = Convert.ToDateTime(sqlDataReader["DELIVERYDATE"]).ToString("dd/MM/yyy"); 

И когда вы выкладываете обновить, преобразовать его в дату и время в вашем методе доступа к данным:

SqlParameter sqlParameter1 = sqlCommand.Parameters.AddWithValue("@DeliveryDate", Convert.ToDateTime(deliveryModel.DeliveryDate));