У меня есть веб-сайт с MVC, который имеет раскрывающийся список на главной странице.
Данные в базе данных привязаны к году. так что каждый год мы получаем новую чистую БД для начала (или так кажется с сайта, потому что год изменился)
В раскрывающемся списке вы можете выбрать год, в который вы хотите отредактировать / посмотреть / перейти.
в global.asax у меня есть метод:
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);
}
, который создает список выбора для раскрывающегося списка и устанавливает значение по умолчанию для текущего года.
Я изменил маршрут так, чтобы год всегда был виден в 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" }
);
На главной странице я добавил элемент управления:
<%= Html.DropDownList("schselectr", MVC2_NASTEST.MvcApplication.schooljaarList())%>
и когда кто-то выбирает другой год в раскрывающемся списке, я перехожу на соответствующий URL с помощью 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;
});
});
пока здесь все не работает.
URL выглядит следующим образом: http://localhost:50152/2010-2011/Lesgever
2010-2011 год.
Теперь, когда я нахожусь на этом URL. Я хочу, чтобы выбранное значение в раскрывающемся списке было не текущим годом, а годом, который отображается в URL.
Я попытался добавить следующий код в функцию jQuery document.ready
alert(window.location.pathname.substr(1, 9).trim());
document.getElementById("schselectr").value = "2010-2011";
//$("#schselectr").val(window.location.pathname.substr(1, 9).trim());
но это не работает. JS не генерирует никаких ошибок.
Я использую Firefox.
мои вопросы:
Как мне заставить это работать, чтобы годом URL был выбранный элемент в раскрывающемся списке, используя javascript, jquery или предпочтительно даже в MVC.
Как бы вы улучшили мой метод работы для этой системы. (он же метод в global.asax, ...)