根据下拉列表中选定的ID重新加载页面

时间:2012-03-01 17:21:35

标签: jquery asp.net-mvc-3

我需要根据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>

我选择的ID工作正常,因为警报会在更改时显示正确的ID。只是找不到任何显示如何导航回索引操作并发送新ID的示例。我找到的所有样本都使用ajax显示部分页面或此类刷新。我需要重新加载整个页面。

由于

更新

使用@ Brandon的帮助,我已尝试过这些方法

<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,并使用所选ID

点击了该操作

2 个答案:

答案 0 :(得分:5)

只需设置window.location

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

这应生成您的操作的URL(清除当前ID),然后附加新的路由参数。

答案 1 :(得分:0)

我对.NeT不起作用,但这样的事情应该有用

        if( selected==someValue){   
        location.href= location.href+'?id=' + id;
        }