我有一个关于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中的方法,......)
答案 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吗?即做一个观察源。