2013-08-06 102 views
0

我在查看填充2周的DropDownList:第二個DropdownList總是填充「[]」的值?

<tr> 
     <td class="info_label">City</td> 
     <td>@Html.DropDownListFor(m=>m.User.City,Model.City,"-- Chọn thành phố --",new { @class = "dropdown" })</td> 
    </tr> 
    <tr> 
     <td class="info_label">Ward</td> 
     <td>@Html.DropDownListFor(m => m.User.Ward, Model.Ward, "-- Chọn quận --" ,new { @class = "dropdown" })</td> 
    </tr> 

當我改變第一DDL的值,第二DDL也改變取決於第一的價值。我有一個jQuery腳本來實現這一點。這是我的jquery代碼:

function LocationValue() { 
    $("#User_City").change(function() { 
     var cityName = $("#User_City").val(); 
     if (cityName == null) { 
      $("Ward").prop("disabled", true); 
     } 
     else { 
      $("Ward").prop("disabled", false); 
      getWards(cityName); 
     } 
    }); 
} 
function getWards(cityName) { 
    $.ajax({ 
     url: "/Checkout/Wards", 
     data: { CityName: cityName }, 
     dataType: "json", 
     type: "POST", 
     error: function() { 
      return; 
     }, 
     success: function (data) { 
      var items = ""; 
      $.each(data, function (i, item) { 
       items += "<option value=\"" + item.Value + "\">" + item.Text + "</option>"; 
      }); 
      $("#User_Ward").html(items); 
     } 
    }); 
} 

和在我的控制器Post方法:

[HttpPost] 
    public ActionResult Cities() 
    { 
     var cities = ILocaRepo.Cities; 
     return Json(new SelectList(cities,"CityID","CityName")); 
    } 
    [HttpPost] 
    public ActionResult Wards(string CityName) 
    { 
     var wards = ILocaRepo.ListWardByCityName(CityName); 
     return Json(new SelectList(wards, "WardID", "WardName")); 
    } 

出於某種原因,2源DDL有Value = x.CityName.ToString(),沒有CityID(INT)。在firebud中,爲什麼第二個ddl的repsone始終是[]。任何暗示我的錯誤?

+0

有點困惑,因爲你有一個名爲「城市」的下拉列表中,但詮釋,他的JS標記,你指的是一個「User_City」。 –

+0

因爲在firebug中,我檢查ddl並查看它的ID是'User_City',名字是'User.City'。 – Luffy

回答

1

在firebud,爲什麼第二次DDL的repsone始終是[]

大概是因爲ListWardByCityName方法您調用返回一個空列表。如果此方法未按城市名稱找到相應的條目,則可能發生這種情況。調試此方法以瞭解發生這種情況的原因。

作爲一個方面的話,你似乎可以用一些$('#User_City')選擇,但你的下拉菜單沒有這樣的ID。請確保您分配適當的ID吧:

@Html.DropDownListFor(
    m => m.User.City,Model.City, 
    "-- Chọn thành phố --", 
    new { @class = "dropdown", id = "User_City" } 
) 
+0

是的,我在'ListWardByCityName'中的錯誤。我編輯它,它工作正常。但是,我可以將第二個ddl返回到可選標籤,例如'「 - 如果第一個是在' - Chọnthànhphố--'上,則第二個ddl值是一個長列表項目,我怎麼能清空它之前填充依賴於第一DDL – Luffy

+0

你可以開始這樣的'$空()從AJAX調用值(「#id_of_your_second_ddl」),以填補之前清空第二DDL;' –

相關問題