web-dev-qa-db-fra.com

Passer les valeurs de date de l'appel Ajax à MVC

Mon appel 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);
            }
        });
    });

MON code C #

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

Les valeurs DateTime ne sont pas reçues à la fin du code ..... Elles apparaissent simplement vides. En jquery quand j'ai essayé de

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

to datestring retourne la date d'aujourd'hui, mais je veux que la partie de l'heure soit également la date et l'heure.

32
Nanu

Ne faites aucune astuce avec les formats de données. Utilisez simplement la fonction standard date.toISOString () qui retourne au format ISO8601.

de javascript

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

de c #

[HttpPost]
public JsonResult Do(DateTime date)
{
     return Json(date.ToString());
}
71
rnofenko

La conversion de la date json dans ce format "mm/jj/aaaa HH: MM: ss" est l'astuce dateFormat est une fonction dans le fichier jsondate format.js trouvé à http://blog.stevenlevithan.com/archives/format date-heure

var _meetStartTime = dateFormat(now, "mm/dd/yyyy HH:MM:ss");
12
Nanu

Ne pouvez-vous pas simplement passer un DateTime et séparer la partie Date de la partie Heure sur le serveur?

Ne pouvez-vous pas simplement passer '_mDate': maintenant;

public ActionResult SetMeeting(string ComputerName, DateTime? _mDate)
{
   // Then in here use _mDate.Date, and _mDate.Time    
}
1
ETFairfax

Pourquoi ne pas convertir la date (et l'heure) en horodatage à partir d'Unix Epoch, puis utiliser js pour afficher la date?

c #

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

Avec cette approche, vous pouvez passer l'Epoch sous forme de chaîne dans json, puis le gérer comme une date dans js.

1
gnome

Cela concerne le formatage. Vous pouvez certainement utiliser des bibliothèques ou des plugins, j'ai choisi de rester très simple:

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

BAISER!

0
Jowen