我有一個網站與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())%>
,當有人選擇一年中下拉,我導航到匹配的網址使用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;
});
});
直到這裏一切w獸人。
該URL看起來像這樣:http://localhost:50152/2010-2011/Lesgever 2010-2011是今年。
現在,當我在這個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的一年將在下拉列表中選擇的項目,即使在MVC使用JavaScript,jQuery的,或最好。
你會如何改進我的工作方法,這個系統。 (又名:中Global.asax的方法,...)
你可以發佈生成的選擇HTML。即做一個視圖源。 – 2010-02-23 11:32:06