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