J'ai un site Web avec MVC, qui a une liste déroulante dans la page maître. Les données de la base de données sont liées à une année. Ainsi, chaque année, nous obtenons une nouvelle base de données propre pour commencer (ou du moins semble-t-il sur le site Web car l'année a changé)Dropdown sur masterpage. Comment obtenir la bonne valeur
La liste déroulante vous permet de sélectionner l'année que vous souhaitez modifier/voir/entrer.
dans le global.asax i ont une méthode:
public static SelectList schooljaarList() {
NASDataContext _db = new NASDataContext();
int schooljaarID = (from p in _db.Schooljaars
where p.Sch_Schooljaar == SCHOOLJAAR
select p.Sch_ID).First();
return new SelectList(_db.Schooljaars.ToList(), "Sch_ID", "Sch_Schooljaar", schooljaarID);
}
qui rend le SelectList pour le menu déroulant, et définit la valeur par défaut pour l'année en cours.
j'ai modifié le routage pour que l'année est toujours visible dans l'URL
routes.MapRoute(
"Default", // Route name
"{schooljaar}/{controller}/{action}/{id}", // URL with parameters
new { schooljaar = MvcApplication.SCHOOLJAAR, controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
, new { schooljaar = @"(19|20)\d\d-(19|20)\d\d" }
);
Dans le masterpage i ajouté le contrôle:
<%= Html.DropDownList("schselectr", MVC2_NASTEST.MvcApplication.schooljaarList())%>
et quand quelqu'un choisit une autre année dans la liste déroulante, je navigue vers l'url correspondant en utilisant jQuery
$(document).ready(function() {
$("#schselectr").change(function() {
//alert(window.location.pathname);
var oldpath = window.location.pathname;
// alert($('option:selected', this).text());
var newpath = "http://" + window.location.host + "/" + $('option:selected', this).text().trim() + window.location.pathname.substr(10);
//alert(newpath);
window.location = newpath;
});
});
jusqu'à ici tout w orks. L'URL ressemble à ceci: http://localhost:50152/2010-2011/Lesgever 2010-2011 est l'année.
Maintenant, quand je suis sur cette URL. Je veux que la valeur sélectionnée dans la liste déroulante ne sera pas l'année en cours, mais l'année qui est visible dans l'URL.
J'ai essayé d'ajouter le code suivant dans la fonction document.ready du jQuery
alert(window.location.pathname.substr(1, 9).trim());
document.getElementById("schselectr").value = "2010-2011";
//$("#schselectr").val(window.location.pathname.substr(1, 9).trim());
mais il ne fonctionne pas. le JS ne génère aucune erreur. J'utilise firefox.
mes questions:
Comment puis-je obtenir ce travail, que l'année de l'URL sera l'élément sélectionné dans le menu déroulant, en utilisant javascript, jquery, ou, de préférence, même dans MVC.
Comment amélioreriez-vous ma méthode de travail pour ce système. (Aka: la méthode dans le global.asax, ...)
Pouvez-vous publier le code HTML de sélection généré? C'est à dire. faire une vue-source. –