2013-08-06 66 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;' –

相关问题