2013-02-22 22 views
0

我還在學習MVC4。在MVC4中實現此視圖的順序或流程是什麼

想象一下下面的場景:我有三個dropDownLists和一個大內容的div。我不知道如何處理按需加載。

流程很簡單,當頁面加載時,顯示第一個下拉列表中的數據。當這個值有一個值時,第二個應該按需加載信息(使用從ddl1選擇的值)等等,直到改變ddl3上的值並顯示數據。

在此之前,我檢測到兩個部分視圖。我不確定是否應該創建5,因爲每個ddl必須位於一個局部視圖中。

另一件事,你會推薦什麼來維護SelectList,如果我不得不使用ViewBag或在視圖模型中保存foreach ddl的集合嗎?

enter image description here

我只是一個知道你是否能clarrify這種情況。我的意思是,想一想我該如何開始做這件事?事實上,我忘了提到這個疑問,但是如果我必須使用AJAX,我不會。在同一種東西

+0

http://stackoverflow.com/questions/5497524/在asp-net-mvc-3-with-c-sharp中最簡單的方式創建一個cascade-drop-in-asp-net 讀取第一個值,然後通過ajax調用並將其傳遞給子動作並重復相同。 – 2013-02-22 04:14:52

回答

0

我卡住了,幾個星期前: -

讓你的MVC調用如: -

private void LoadDropdown1() 
    { 
     var _data;//Your logic to get the data 
     ViewData["Dropdown1"] = new SelectList(_data, "Dropdown1Id", "Name"); 
    } 
    private void LoadDropdown2(int dropdownParameterId) 
    { 
     var _data = "";//Use your ID to get the data 
     ViewData["Dropdown2"] = new SelectList(_data, "Dropdown2Id", "Name"); 
    } 

你.cshtml是: -

@using (Html.BeginForm()) 
{ 
    <div> 
     <table> 
      <tr> 
       <td><b>Select a District:</b></td> 


       <td>@Html.DropDownListFor(m => m.Dropdown1Id, ViewData["Dropdown1"] as IEnumerable<SelectListItem>, "Select One", new {@id="Dropdown1Id"})</td> 
      </tr> 
      <tr> 
       <td><b>Select:</b></td> 

       <td>@Html.DropDownListFor(m => m.Dropdown2Id, ViewData["Dropdown2"] as IEnumerable<SelectListItem>, "Select One")</td> 
      </tr> 
     </table> 
    </div> 
} 

現在AJAX呼叫最好是將數據加載到您的下拉列表中: -

$(function() { 
    $('select#Dropdown1').change(function() { 
     var id = $(this).val(); 


     $.ajax({ 
      url: 'Bla Bla', 
      type: 'POST', 
      data: JSON.stringify({ id: id }), 
      dataType: 'json', 
      contentType: 'application/json', 
      success: function (data) { 
       $.each(data, function (key, data) { 
        $('select#Dropdown1').append('<option value="0">Select One</option>'); 
        // loop through the LoadDropdown1 and fill the dropdown 
        $.each(data, function (index, item) { 
         $('select#Dropdown1').append(
          '<option value="' + item.Id + '">' 
          + item.Name + 
          '</option>'); 
        }); 
       }); 
      } 
     }); 
    }); 
}); 

我想說的是..按照你喜歡的方式加載你的第一個下拉列表。然後在1下拉的變化情況,可以觸發一個Ajax調用來獲取的第二個下拉數據....同樣..

參考: - on select change event - Html.DropDownListFor

相關問題