2016-05-19 3 views
1

J'ai un objet JSON comme ceci:Impossible de transmettre la valeur de date à la méthode du contrôleur via la méthode jquery post.

var data = {}; 
data = 
{ "First" : _this.getFirstElement.val(), 
    "Second": _this.getSecondElement.val(), 
    "DateProperty" : _this.getDatePropertyElement.val() 
}; 

Ceci est transmis à la méthode de commande à l'aide post jquery:

$.post(url,data,function(){somefunction}); 

Ma méthode de commande est comme ceci:

[HttpPost] 
public void ControllerMethod(TestObject data) 
{ 
    // data.DateProperty is coming as null 
    // logic 
} 

Qu'est-ce que Ai-je manqué?

Le FormData passé quand on les regarde dans la section réseau de navigateur spécifie données:

 FormData : 
     First : <some data> 
     Second : <some data> 
     DateProperty : some long date string 

Plus tard j'ai changé les données JSON envoyer date JSON.stringify()

maintenant dans le formData, la valeur vient comme

First : <some data> 
    Second : <some data> 
    DateProperty : "05/06/16" 

Mais toujours à la méthode du contrôleur, dateProperty est null?

+0

Ce que vous avez décrit devrait fonctionner correctement. Êtes-vous sûr que le nom de propriété de 'DateProperty' correspond à ce qui est défini dans le modèle C#? –

+0

@RoryMcCrossan - oui. La propriété est la même côté C#. – SunilA

+0

J'ai eu une observation étrange - quand je hardcode la valeur des données de publication du navigateur et définissez la dateProperty comme "09/07/10". Il a donné une valeur de date correcte au contrôleur. – SunilA

Répondre

0

La mise en forme de la valeur de date à partir de javascript à l'aide de dateFormat a résolu le problème.

Voilà comment je formatté la valeur de date:

var data = {}; 
data = { 
    "First" : _this.getFirstElement.val(), 
    "Second": _this.getSecondElement.val(), 
    "DateProperty" : dateFormat(_this.getDatePropertyElement.val(), "mm/dd/yyyy HH:MM:ss"), 
}; 

Avec cette valeur de date est reçue à la méthode du contrôleur.

Références: