Передать значения даты из Ajax Call в MVC - PullRequest
32 голосов
/ 20 мая 2011

Мой вызов Ajax

 $('#QuickReserve').click(function () {
        var now = new Date();
        alert(now);

        var _data = {
            'ComputerName': _computerName,
            '_mStart': now.toTimeString(),
            '_mEnd': now.toDateString()
        };
        $.ajax({
            cache: false,
//            contentType: "application/json; charset=utf-8",
            type: "POST",
            async: false,
            url: "/Home/SetMeeting",
            dataType: "json",
            data: _data,
            success: "",
            error: function (xhr) {
                alert("Error");
                alert(xhr.responseText);
            }
        });
    });

Мой код C #

 public ActionResult SetMeeting(string ComputerName, DateTime? _mStart, DateTime? _mEnd)
        {
           }

Значения DateTime не принимаются в конце кода ..... Они просто отображаются пустыми.В jquery, когда я пытался

'_mStart': now.toTimeString(),
            '_mEnd': now.toDateString()

, чтобы datestring действительно возвращала сегодняшнюю дату, но я хочу, чтобы часть времени времени также была.

Ответы [ 5 ]

71 голосов
/ 29 января 2015

Не делайте никаких трюков с форматами данных. Просто используйте стандартную функцию date.toISOString () , которая возвращает в формате ISO8601.

из JavaScript

$.post('/example/do', { date: date.toISOString() }, function (result) {
    console.log(result);
});

от c #

[HttpPost]
public JsonResult Do(DateTime date)
{
     return Json(date.ToString());
}
12 голосов
/ 23 мая 2011

Преобразование даты в формате json в этот формат «мм / дд / гггг ЧЧ: ММ: сс» - вот и вся хитрость dateFormat - это функция в файле jsondate format.js, которая находится по адресу http://blog.stevenlevithan.com/archives/date-time-format

var _meetStartTime = dateFormat(now, "mm/dd/yyyy HH:MM:ss");
1 голос
/ 21 мая 2011

Почему бы не преобразовать дату (и время) в метку времени из эпохи Unix, а затем использовать js для отображения даты?

с #

public double FromUnixEpoch(DateTime value)
{
    DateTime unixEpoch = new DateTime(1970, 1, 1);
    double timeStamp = (value - unixEpoch).Ticks / 1000;
    return timeStamp;
}

JS

var myDate = new Date( object.myEpochDate *1000);
myDate.toUTCString().toLocaleString();

При таком подходе вы можете передать эпоху как строку внутри json, а затем обработать ее как дату в js.

1 голос
/ 21 мая 2011

Можете ли вы не просто передать один DateTime и отделить часть Date от временной части на сервере?

Можете ли вы не просто передать '_mDate': сейчас;

public ActionResult SetMeeting(string ComputerName, DateTime? _mDate)
{
   // Then in here use _mDate.Date, and _mDate.Time    
}
0 голосов
/ 21 августа 2014

Это связано с форматированием.Вы определенно можете использовать библиотеки или плагины, я решил сделать это по-настоящему простым:

function getFormattedDate(date) {
  var curr_date = date.getDate();
  var curr_month = date.getMonth() + 1; //Months are zero based
  var curr_year = date.getFullYear();
  return curr_date + "-" + curr_month + "-" + curr_year;          
}

KISS!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...