jquery datetime picker проблема формата даты и времени с MVC3 - PullRequest
2 голосов
/ 07 октября 2011

Я использую JQuery Date Time Picker в приложении MVC3. Я использую дату и время, чтобы отфильтровать результаты для списка. Ниже показано, как выглядит мой поисковый URL

/Objectives?Description=&FromDate=03%2F10%2F2011

выбранный формат даты и времени - 03 октября 2011 г.

но когда оно разрешено в контроллере, оно принимается за 10 марта 2011 года.

выбранная культура en-GB.

но при использовании в форме Ajax эта проблема не существует, потому что Ajax URL автоматически устанавливается как /Objectives?Description=&FromDate=10%2F03%2F2011

Я использую следующие строки кода для форматирования даты и времени в DateTimePicker.

$(function () {
    $(".datePicker").datepicker({ 
            changeMonth: true,
            changeYear: true,
            dateFormat: 'dd/mm/yy',
            altField: 'dd-mm-yy', 
            altFormat: 'dd/mm/yy' 

    });
});

ниже приведен код редактора для DateTime

@model DateTime?
@{
    var htmlAttributes = new Dictionary<string, Object>();
    htmlAttributes.Add("class", "datePicker");
    htmlAttributes.Add("readonly", "true"); 
}
@Html.TextBox(string.Empty, (Model.HasValue ? Model.Value.ToString() : string.Empty), htmlAttributes)

мы используем следующую модель для получения данных от пользователя.

public class LogModel : LogBaseModel
{

    [Display(Name = "From Date")]
        public DateTime? FromDate { get; set; }

        [Display(Name = "To Date")]
        public DateTime? ToDate { get; set; }

}

следующий код в index.cshtml

@using (Html.BeginForm("Index", "Calls", Model, FormMethod.Get))
{
<div id="filter_set_wrapper">
                    @Html.Custom().FilterLabelFor(model => model.FromDate)
                    @Html.Custom().TextBoxFor(model => model.FromDate)
                    @Ajax.TextBoxClear("FromDate", "FromDateClear(#FromDate#, ##);", "Clear From Date", "PopUpLink.PNG")
                </div>
                <div id="filter_set_wrapper">
                    @Html.Custom().FilterLabelFor(model => model.ToDate)
                    @Html.Custom().TextBoxFor(model => model.ToDate)
                    @Ajax.TextBoxClear("ToDate", "ToDateClear(#ToDate#, ##);", "Clear To Date", "PopUpLink.PNG")
                </div>

<input type="submit" class="btn" value="Filter" />
}

следующий метод контроллера

public ActionResult Index(LogModel callsModel)
        {
            if (callsModel.FromDate != null)
            {
                var model = callsModel;

                var d = DateTime.Parse(model.FromDate.Value.ToString("MM/dd/yyyy"));



            }
}

Может кто-нибудь помочь мне в решении этого вопроса. Первый ответ дает правильную дату и время. Но проблема в том, что при использовании с вышеупомянутой моделью не удалось получить правильную дату для метода контроллера. Если кто-нибудь знает, как исправить это с вышеупомянутой моделью, пожалуйста, ответьте.

Спасибо заранее.

1 Ответ

0 голосов
/ 07 октября 2011

Используете ли вы DateTime.ParseExact?

var date = DateTime.ParseExact(Request["FromDate"], "dd/MM/yy", CultureInfo.InvariantCulture);

Я думаю, должно работать?

...