下载到母版页。如何使所选值正确

时间:2010-02-23 09:47:59

标签: jquery asp.net-mvc master-pages

我有一个关于MVC的网站,它在主页面上有一个下拉列表。 数据库中的数据链接到Year。所以每年我们都会得到一个新的干净数据库(或者从网站上看,因为年份发生了变化)

下拉框可让您选择要编辑/查看/进入的年份。

在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())%>

当有人在下拉列表中选择另一年时,我会使用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;
        });
    });

直到这里一切正常。

网址如下所示: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 个答案:

答案 0 :(得分:1)

设置选择框的值时,是否尝试将其设置为可见文本或背景值。

以下内容:

$("#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吗?即做一个观察源。