Обновить страницу на основе выбранного идентификатора из выпадающего - PullRequest
2 голосов
/ 01 марта 2012

Мне нужно перезагрузить страницу на основе выбора значения в раскрывающемся списке в MVC 3. Мой выпадающий определяется так:

@Html.DropDownListFor(model => model.ID, new SelectList(Model.SchoolBranches, "ID", "Name", Model.ID), new { id = "Branches", name = "Branches"})

Мой сценарий до сих пор определен так:

<script type="text/javascript">
    $(function () {
        $("#Branches").change(function () {
            var selected;
            selected = $(this).val();
            alert(selected);
            // make a call to the Index action passing in the 'selected' value to reload the whole page
    });
});
</script>

Мой выбранный идентификатор работает нормально, так как предупреждение показывает правильный идентификатор при изменении. Просто не могу найти ни одного примера, показывающего, как вернуться к действию индекса и отправить новый идентификатор. Все примеры, которые я нашел, показывают частичную страницу или такое обновление, используя ajax. Мне нужно перезагрузить всю страницу.

Спасибо

UPDATE

С помощью @ Брэндона я попробовал эти подходы

<script type="text/javascript">
    $(function () {
        $("#Branches").change(function () {
            var selected;
            var url;
            selected = $(this).val();
            url = '@Url.Action("Index", "School")';
            alert(url); //gives /School/Index/55  this is also  my current page in my browser address bar
            url = '@Url.Action("Index", "School", new {id = ""})';
            alert(url); //gives /School
            url = '@Url.Action("Index", "School", new {id = ""})' + '/' + selected;
            alert(url); //gives /School/41 

            // window.location = url;
        });
    });

</script>

Это мой маршрут в global.asax, чтобы вы могли видеть, что у меня нет никаких сумасшедших маршрутов

public static void RegisterRoutes(RouteCollection routes) {
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    //routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );
}

Обновление

Это работает:

url = '@Url.Action("NotIndex", "School", new {id = ""})' + '/' + selected;

Я получаю правильный новый URL-адрес, и действие ударяется с выбранным идентификатором

Ответы [ 2 ]

5 голосов
/ 01 марта 2012

Просто установите window.location.

window.location = '@Url.Action("Index", "Controller", new { id = "" })' + '/' + selected;

Это должно сгенерировать URL вашего действия (очистить текущий идентификатор), а затем добавить новый параметр маршрута.

0 голосов
/ 01 марта 2012

Я мало работаю с .NeT, но что-то вроде этого должно работать

        if( selected==someValue){   
        location.href= location.href+'?id=' + id;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...