2011-08-31 237 views
2

我正在使用Razor和C#在ASP .NET MVC 3的網站上工作。根據另一個下拉列表中的選擇填充下拉列表

我在視圖上有兩個下拉列表 - 一個是設備類型,一個是設備模型。設備型號下拉列表的內容基於選定的設備類型。此外,應該禁用設備型號下拉列表,直到選擇設備類型。我希望功能是客戶端。

我該如何做到這一點?

編輯:在一個不同的問題收到的答案:Fill a drop down list dynamically using Javascript/jQuery

回答

2

爲什麼不二號的DD列表放在一個div容器,使用Ajax從第一列表中選擇值發佈到一個控制器動作(平變化),其回報將呈現的部分作爲HTML呈現給客戶端,然後用動作結果替換第二個列表容器的HTML。

如果你打算使用jQuery來查看$ .ajax,並用你的控制器action替換掉,並分別動態地重寫你的目標div html。

+0

這聽起來像是要走的路。我非常樂意使用jQuery。您是否可以進一步擴展使用Ajax來調用控制器操作? – link664

+0

完成問一個更清晰的問題,給了我想要做的答案:http://stackoverflow.com/q/7253187/155586 – link664

1

如果沒有多少組合,那麼您也可以簡單地將整個字典放到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?),清除第二個下拉列表並從此數組(它是客戶端)填充它。

請記住,我給你一個的例子完全組成你的數據結構......但你應該從中得到這個想法。

相關問題