2011-05-26 170 views
3

我想寫一個有兩個下拉列表的MVC網頁。第二個列表的內容取決於第一個選擇的內容。MVC下拉列表綁定取決於另一個下拉列表的值

似乎沒有一種使用內置MVC函數的方法,所以我將不得不推出我自己的。不過我不是讓所有我需要的功能...這是最好的方式明確「是一樣的web表單」 :)

我創建的方式類似於this

然而下拉菜單我不確定如何開發這個功能,這樣如果第一個列表中的第一個列表中有一個「selected」元素,它將在頁面加載時自動綁定第二個列表。

編輯: 只是要清楚,我有能力將過濾的列表綁定到第二個下拉列表。但是,如果我的模型包含第一個下拉列表的選擇,則選擇設置正確,但第二個下拉列表不填充。

(我必須聲明,我對新望MVC和Javascript是像一些陌生的語言給我嗎?)

EDIT2: 我已經想過這個多一點。 很明顯,我受到我開發webforms的強烈影響,並且我不太''獲得'MVC。 我認爲我確實有一些東西應該在我的模型中捕捉(即,如果我已經有了設置兩個下拉列表的信息,那麼我應該以某種方式在控制器中捕獲該信息並建立下拉菜單,而不是嘗試建立一個「ondatabound」類型的方法,並有觀點稱(這是我最初的意圖)...現在我需要去研究如何做:)

回答

2

This是更好的實現,我發現之一。這個問題也被討論過here

0

看到這個blog post創建級聯下拉列表在asp.net mvc與可下載的源代碼。

1

你任務包含3個子任務:

  1. 你應該使用選定的值
  2. 你應該處理得到的產品清單2的動作阿賈克斯得到改變第一DDL的選擇項第二DDL的列表與第二DDL的定義的內容-nd你的控制器DDL和返回查看
  3. 你應該得到處理動作的結果更新第二DDL的內容

<script type="text/javascript">

 
    $(function(){ 
     $("form #ddl_1").change(function(){ 
      $.get({ // get request 
        url: "@Url.Action("MyController", "GetList"})" + "/" + $(this).val, 
        success: function(data){ // updating 
         $("form #ddl_2").html(data); 
        } 
     }) 
    }); 

</script>

「的GetList」行動應採取參數「ID」,如果你使用默認路由表(或你需要用定製路由表中創建特殊的記錄),並返回局部視圖(無主頁)與您DDL2選項,這樣的名單:

<option value="1">First</option> 
<option selected value="2">Second</option> 
<option value="3">Third</option> 
相關問題