我正在使用Razor和C#在ASP .NET MVC 3的網站上工作。根據另一個下拉列表中的選擇填充下拉列表
我在視圖上有兩個下拉列表 - 一個是設備類型,一個是設備模型。設備型號下拉列表的內容基於選定的設備類型。此外,應該禁用設備型號下拉列表,直到選擇設備類型。我希望功能是客戶端。
我該如何做到這一點?
編輯:在一個不同的問題收到的答案:Fill a drop down list dynamically using Javascript/jQuery
我正在使用Razor和C#在ASP .NET MVC 3的網站上工作。根據另一個下拉列表中的選擇填充下拉列表
我在視圖上有兩個下拉列表 - 一個是設備類型,一個是設備模型。設備型號下拉列表的內容基於選定的設備類型。此外,應該禁用設備型號下拉列表,直到選擇設備類型。我希望功能是客戶端。
我該如何做到這一點?
編輯:在一個不同的問題收到的答案:Fill a drop down list dynamically using Javascript/jQuery
爲什麼不二號的DD列表放在一個div容器,使用Ajax從第一列表中選擇值發佈到一個控制器動作(平變化),其回報將呈現的部分作爲HTML呈現給客戶端,然後用動作結果替換第二個列表容器的HTML。
如果你打算使用jQuery來查看$ .ajax,並用你的控制器action替換掉,並分別動態地重寫你的目標div html。
如果沒有多少組合,那麼您也可以簡單地將整個字典放到JavaScript變量中的客戶端,然後按照您的需要完成整個客戶端。
例:
在控制器,你會存儲字典中ViewBag像這樣:
// Keep in mind that I don't know your data structure, but you'll get the point.
ViewBag.DeviceDictionary = myDictionary;
然後在視圖中,你會做這樣的事情:
<script type="text/javascript">
// new-up an array in JavaScript.
var devices = [];
// ... IT'S RAZOR TIME!!!
@foreach (Device d in ViewBag.DeviceDictionary)
{
<text>
// We're back in JavaScript here... new up the dictionary.
devices[@d.ID] = [];
</text>
foreach (var model in d.Models
{
<text>devices[@d.ID].push("@model.Name");</text>
}
}
</script>
然後,您只需編寫一些簡單的JavaScript(使用jQuery?),清除第二個下拉列表並從此數組(它是客戶端)填充它。
請記住,我給你一個的例子完全組成你的數據結構......但你應該從中得到這個想法。
這聽起來像是要走的路。我非常樂意使用jQuery。您是否可以進一步擴展使用Ajax來調用控制器操作? – link664
完成問一個更清晰的問題,給了我想要做的答案:http://stackoverflow.com/q/7253187/155586 – link664