我目前有两个班级城市和区域(分别为1对多关系)。在我看来,我有2个下拉列表,一个用于所有城市,另一个用于区域(使用ViewBag填充)。选择城市时,我希望区域的下拉列表仅显示该城市的区域而不重新加载整个视图。我之前使用过Ajax但只是为了重新填充模型的数据而不是ViewBag。那我怎么能用Ajax和ViewBag来做呢?
答案 0 :(得分: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);
}
});
});
ACTION:
public ActionResult GetDistrictsByCity(Guid cityId){
//GET Districts that is linked to the cityId
return PartialView("_DistrictsByCity", model);
}
然后在视图“_DistrictsByCity”中您创建的所有内容都是下拉列表。然后将获取html并将其放置在id为“district-select”的div中
如果有什么不清楚,请告诉我
答案 1 :(得分:0)
使用ViewBag代替StronglyTyped(模型)是个坏主意 所以声明一个ViewModel First,然后通过ViewModel将数据传递给View