Transmettre des valeurs de MVC contrôleur de code javascript
J'ai besoin de passer de la liste/json/tableau de dates de l'information à un Jquery UI Datepicker dynamiquement par un jsonresult dans un contrôleur MVC.
Suivant le lien ci-dessous, je suis en mesure de mettre en évidence certaines dates dans le contrôle datepicker.
http://jquerybyexample.blogspot.com/2012/05/highlight-specific-dates-in-jquery-ui.html
< script type ="text/javascript">
$(document).ready( function () {
var SelectedDates = {};
SelectedDates[ new Date('05/28/2012' )] = new Date( '05/28/2012' );
SelectedDates[ new Date('05/29/2012' )] = new Date( '05/29/2012' );
SelectedDates[ new Date('05/30/2012' )] = new Date( '05/30/2012' );
//want to replace the above three lines with code to get dates dynamically
//from controller
$( '#releasedate' ).datepicker({
dateFormat: "mm/dd/yy" ,
numberOfMonths: 3,
duration: "fast" ,
minDate: new Date(),
maxDate: "+90" ,
beforeShowDay: function (date) {
var Highlight = SelectedDates[date];
if (Highlight) {
return [true , "Highlighted", Highlight];
}
else {
return [true , '', '' ];
}
}
});
Le code ci-dessus met en évidence ces trois dates sur le calendrier de contrôle(UIDatepicker).Au lieu de codage en dur des dates comme ci-dessus... Mon défi est d'obtenir ces dates dynamiquement à partir d'un contrôleur et de la transmettre à la var SelectedDates dans le code javascript ci-dessus.
Contrôleur jsonresult code:
public JsonResult GetReleasedDates(string Genre)
{
var relDates = service.GetDates(Genre)//code to get the dates here
return Json(relDates, JsonRequestBehavior .AllowGet);
//relDates will have the dates needed to pass to the datepicker control.
}
Merci pour l'aide.
- êtes-vous de faire un appel ajax?
- Je n'ai pas fait quelque chose.. encore. Je sais que j'ai les dates à venir à partir de la manette et j'ai le uidatepicker code... j'ai fait appel ajax pour transmettre des valeurs à partir de l'interface utilisateur du contrôleur avant.. maintenant je veux l'autre façon de contrôleur de l'interface utilisateur
- l'interface utilisateur aura toujours de tirer la manette. c'est la façon de le http fonctionne aujourd'hui.
Vous devez vous connecter pour publier un commentaire.
La première possibilité est d'utiliser un modèle qui sera directement sérialisé en JSON:
et dans la vue:
L'autre possibilité est d'utiliser AJAX pour récupérer les
selectedDates
plus tard:et puis:
@Url.Action
dans l'url finale? N'êtes-vous pas utiliser de Rasoir? Est-ce dans un autre fichier javascript? Si c'est dans un autre fichier javascript de toute évidence vous ne pouvez pas utiliser côté serveur aides.<%= Url.Action("GetSelectedDates") %>
. Puisque vous n'avez pas indiqué le moteur d'affichage que vous utilisez dans votre question, je suppose Rasoir.Il y a une bibliothèque pour échanger des données de contrôleur pour javascript, sans la nécessité d'un nouvel appel ajax ou javascript en ligne.
Si vous avez besoin des données sur chaque page, vous pouvez l'utiliser dans un filtre.
http://jsm.codeplex.com
Avec la bibliothèque, vous pouvez simplement écrire le code suivant dans votre MVC Action de Contrôleur:
Votre fichier javascript pourrait ressembler à ceci:
Remarque: Vous aurez peut-être même de créer un modèle spécial pour les dates que vous passez avec cette.AddJavaScriptVariable qui est compatible pour le datepicker.
Faire un appel ajax:
faire un appel ajax pour obtenir les dates. en cas de succès de la requête ajax, configurer le datapickers avec les résultats.
Une autre recommandation. la valeur par défaut sérialiseur json ne joue pas bien avec l'objet datetime. c'est pourquoi je voudrais vous suggérons de retourner les dates comme des chaînes de caractères avant de sérialisation. exemple: