2011-10-26 73 views
0

所以我在處理級聯下拉列表時遇到問題。每當我在第一個下拉列表中選擇一個值時,第二個下拉列表將被填充,但在第二個下拉列表的頂部會顯示「第一個選定的值」。那有意義嗎?以下是代碼。我不確定它是否正確添加,似乎無法在螢火蟲上找到任何東西。mvc ajax dropdownlist值問題

任何意見表示讚賞。

謝謝!

的觀點:

<script type="text/javascript"> 
    $(function() { 
     $('#<%: ViewData.TemplateInfo.GetFullHtmlFieldId("1stLevel") %>').change(function() { 
      $.ajax({ 
       url: '<%: Url.Action("Index","2ndLevelDetails") %>?1stLevelId=' + $(this).val(), 
       success: function (data) { 
        $('#<%: ViewData.TemplateInfo.GetFullHtmlFieldId("2ndLevelId") %>').html(data); 
       }, 
       async: false 
      }); 
     }); 
    }); 
</script> 


      <div class="dropdown"> 
       <%: Html.DropDownList("1stLevelDetails", new SelectList(Model.1stLevel, "1stLevelId", "1stLevelDescription"))%> 
      </div> 

      <div class="dropdown"> 
       <%: Html.DropDownListFor(model => model.2ndLevelId, new SelectList(Model.NTEESecondaryCodes, "2ndLevelId", "2ndLevelDescription", Model.2ndLevelId))%> 
      </div> 

控制器2ndlevel返回的選項

public string Index(int 1stLevelId) 
{ 
    var ntee = new System.Text.StringBuilder(); 
    foreach (2ndLevelDetails code in 2ndLevelDetails.Find2ndLevelIds(ArgentDb, 1stLevelId)) 
    { 
     ntee.AppendFormat("<option value=\"{0}\">{1}</option>", code.2ndLevelId, code.Description); 
    } 

    return ntee.ToString(); 
} 
+0

你確定'change'事件有效嗎?將Ajax代碼更改爲簡單的警報以進行檢查。 –

回答

0

使用jQuery的現場粘結劑嘗試列表..

$('#<%: ViewData.TemplateInfo.GetFullHtmlFieldId("1stLevel") %>').live('change', function() { 
// ... code here 

我不得不使用自從我記得以來,活着就要和改變事件聯繫起來..我不知道爲什麼。