0

J'ai une vue avec le contrôle datepicker dessus et quelques vues partielles sur la page. La date est définie par défaut sur la date du jour dans le ViewData du contrôleur et est utilisée pour afficher le chargement de la page. Lorsque l'utilisateur modifie la date dans le sélecteur de date, comment puis-je passer la valeur sélectionnée de la variable Jquery à ViewData du contrôleur et mettre à jour toutes les vues partielles?Passage de la valeur DatePicker au contrôleur et aux vues

Répondre

0

Le contrôle du sélecteur de date est simplement un élément HTML associé à un javascript pour aider l'utilisateur à sélectionner une date. C'est complètement côté client ce qui signifie qu'il fonctionne sur le navigateur (par exemple IE, Firefox, Chrome). ViewData est un magasin temporaire qui peut être rempli par le code côté serveur (par exemple C#) dans l'action du contrôleur, puis utilisé dans une vue pour générer la réponse HTML qui sera envoyée au navigateur client. Vous ne pouvez donc pas passer une variable jQuery à ViewData, cela n'a tout simplement pas de sens.

Si vous voulez mettre à jour les parties de la page qui ont été générées par vos partiels, vous avez quelques options. (A) faire une publication en passant le datetime à une action du contrôleur et rafraîchir la page entière (assez simple mais peut ne pas donner une bonne expérience utilisateur en fonction de ce que vous essayez de faire). (B) utilisez Ajax pour mettre à jour les sections de la page que vous voulez (plus impliqué mais peut donner une meilleure expérience utilisateur).

0

@Tony, merci pour la réponse. Je l'ai mis dans un mauvais sens que je voulais passer jquery variable à viewdata, ce que je voulais dire est basé sur la variable jquery (date sélectionnée selectionpicker), je dois recharger les vues partielles. Je dois le faire à Ajax, ce qui est la procédure que j'ai suivi en Javascript:

$(function() { 
     $('#datePickerID').datepicker({ 
     onSelect: function (dateText, inst) { 
     $.post('<%=Url.Action("GetControllerActionResult","ControllerName") %>', 
     { parameter1: dateText }, 
     function (rawdata) { 
     var data = $.parseJSON(rawdata); 
$('htmlID or className of your partial view').html(data.dataString); //rendering your partial view 
} 
     ); 
} 
     });; 

Contrôleur:

public ActionResult GetControllerActionResult(dataType parameter1) { 
    ViewData["someValue"] = parameter1; 
    ViewData["yourPartialViewObject"] = perform some action... 

    var data = new Dictionary<string, object>(); 
    data.Add("dataString", this.RenderViewToString("partialViewName", ViewData["yourPartialViewObject"])); 
    return Content(GetJSONString(data)); 
    } 
Questions connexes