2017-09-28 1 views
-1

Dans mon contrôleur j'ai une action qui a besoin de 4 paramètresPassez une date JS à une action dans le MVC

(public ActionResult MyAction(string CID, DateTime? SD, DateTime? ED , short? DCost) 

J'ai créé une fonction JavaScript avec le code suivant

 var SD = new Date(); 
     var ED = new Date(); 
     var num = 666; 
     window.open("/CarRentz/RentPayment?CID=" + num +"&SD=+ " + SD.toUTCString() + "ED=+ " + ED.toUTCString() + "&DCost=" + num, "_self"); 

ma chaîne et le numéro Je m'entends très bien, mais peu importe comment je présente la date à mon action, elle est toujours nulle, comme si elle ne l'était pas du tout. Je suis relativement nouveau pour MVC, donc passer des valeurs entre JavaScript et C# peut parfois être difficile.

Quel est le moyen le plus simple de donner/transmettre la valeur Date de JS à mon action? Plus, une explication à pourquoi cela se produit?

+0

quel est le but de toUTCString ?? ici votre paramètre dans l'action du contrôleur est l'heure de la date - vous devez envoyer la valeur au format de l'heure date –

+0

Passez la date en tant que [chaîne au format ISO 8601] (https://stackoverflow.com/a/28219325/2030565) puis l'analyser à DateTime. Cela évite les conversions de type et les problèmes de fuseau horaire. – Jasen

+1

Juste une faute de frappe. Il vous manque le '&' dans '" ED = + 'et vous devez supprimer le' + 'dans' '& SD = +" 'et' "ED = +" '-' "/ CarRentz/RentPayment? CID =" + num + "& SD =" + SD.toUTCString() + "& ED =" + ED.toUTCString() + "& DCost =" + num, "_self" ' –

Répondre

0

vous pouvez envoyer la chaîne et l'analyser côté serveur

public ActionResult MyAction(string CID, string SD, string ED , short? DCost) 
{ 
    DateTime date1 = DateTime.ParseExact(SD, "ddd MMM d yyyy HH:mm:ss GMTzzzzz", CultureInfo.InvariantCulture); 
    DateTime date2 = DateTime.ParseExact(ED, "ddd MMM d yyyy HH:mm:ss GMTzzzzz", CultureInfo.InvariantCulture); 
} 

Hope it helps

+0

Merci, même si cela n'a pas vraiment résolu mon problème, je Je peux au moins obtenir toutes les valeurs dans mon ActionResult, tout ce que je dois faire est de donner à C# une chaîne correcte qu'il peut analyser avec la valeur de DateTime. –