Значения даты передачи от Ajax Call до MVC
Мой вызов 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);
}
});
});
Код MY С#
public ActionResult SetMeeting(string ComputerName, DateTime? _mStart, DateTime? _mEnd)
{
}
Значения DateTime не принимаются в конце кода..... Они просто отображаются пустым.
В jquery, когда я пытался
'_mStart': now.toTimeString(),
'_mEnd': now.toDateString()
to datestring вернет сегодняшнюю дату, но я также хочу, чтобы время было и в дате.
Ответы
Ответ 1
Не делайте никаких трюков с форматами данных. Просто используйте стандартную функцию date.toISOString(), которая возвращается в формате ISO8601.
из javascript
$.post('/example/do', { date: date.toISOString() }, function (result) {
console.log(result);
});
из С#
[HttpPost]
public JsonResult Do(DateTime date)
{
return Json(date.ToString());
}
Ответ 2
Преобразование даты json в этот формат "mm/dd/yyyy HH: MM: ss" - это весь трюк
dateFormat - это функция в файле jsondate format.js, найденном в
http://blog.stevenlevithan.com/archives/date-time-format
var _meetStartTime = dateFormat(now, "mm/dd/yyyy HH:MM:ss");
Ответ 3
Не можете ли вы просто передать одну дату DateTime и отделить часть Date от части времени на сервере?
Не могли бы вы просто передать '_mDate': now;
public ActionResult SetMeeting(string ComputerName, DateTime? _mDate)
{
// Then in here use _mDate.Date, and _mDate.Time
}
Ответ 4
Почему бы не преобразовать дату (и время) в метку времени из Unix Epoch, а затем использовать 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.
Ответ 5
Это связано с форматированием. Вы можете определенно использовать libs или плагины, я решил сохранить его очень просто:
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;
}
ПОЦЕЛУЙ!