Выпадающий на главной странице.Как правильно выбрать выбранное значение - PullRequest
1 голос
/ 23 февраля 2010

У меня есть веб-сайт с 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, ...)

1 Ответ

1 голос
/ 23 февраля 2010

Когда вы устанавливаете значение в поле выбора, вы пытаетесь установить для него видимый текст или значение фона.

Следующее:

$("#schselectr").val('2010-2011')

будет работать, если выбранный HTML похож на

<select id='schselectr'>
    <option value='2009-2010'>2009-2010</option>
    <option value='2010-2011'>2010-2011</option>
</select>

Однако, если выходит HTML:

<select id='schselectr'>
    <option>2009-2010</option>
    <option>2010-2011</option>
</select>

Тогда это не будет работать.

Можете ли вы опубликовать выбранный HTML, который генерируется. То есть сделать вид источника.

...