1

我目前有 2 个班级呼叫城市和地区(分别是一对多关系)。在我看来,我有 2 个下拉列表,一个用于所有城市,另一个用于地区(使用 ViewBag 填充)。选择一个城市后,我希望地区的下拉列表仅显示该城市的地区而不重新加载整个视图。我以前使用过 Ajax,但只是为模型而不是 ViewBag 重新填充数据。那么我该如何使用 Ajax 和 ViewBag 呢?

4

2 回答 2

0

您不能重新填充 ViewBag 本身。

我不知道这是否是最好的方法,但我会通过以下方式做到这一点:

HTML:

 <div>
   <select id="city">
     options
   </select>
 </div>
 <div id="district-select">
    <select>
    </select>
 </div>

JS:

$("#city").change(function() {
   var id = $(this).val();
   $.ajax({
     type: "GET",
     url:"/CONTROLLER/GetDistrictsByCity",
     data: {cityId: id},
    success: function(data) {
       $("#district-select").html(data);
    }
   });
});

行动:

public ActionResult GetDistrictsByCity(Guid cityId){
   //GET Districts that is linked to the cityId

   return PartialView("_DistrictsByCity", model);

}

然后在视图“_DistrictsByCity”中,您创建的只是下拉列表。然后将获取该 html 并将其放置在 id 为“district-select”的 div 中

让我知道是否有任何不清楚的地方

于 2013-07-27T11:15:17.077 回答
0

使用 ViewBag 而不是 StronglyTyped (Model) 是个坏主意,因此首先声明一个 ViewModel,然后通过 ViewModel 将数据传递给 View

于 2014-05-22T12:34:39.670 回答