使用Ajax更新ViewBag数据ASP.NET MVC4
我目前有两个类呼叫城市和地区(分别为1对多关系)。在我看来,我有2个下拉列表,一个用于所有城市和另一个对于区域(使用ViewBag填充)。当选择一个城市时,我希望区域的下拉列表仅显示该城市的区域,而无需重新加载整个视图。我之前使用过Ajax,但只是为了重新填充模型数据而不是ViewBag。那么我怎样才能使用Ajax和ViewBag呢?使用Ajax更新ViewBag数据ASP.NET MVC4
您无法重新填充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);
}
然后在t他认为“_DistrictsByCity”所有你创建的是下拉列表。那么HTML将被并置于与该ID的DIV中“区,选择”
让我知道如果有什么不清楚
多数民众赞成我该怎么做,但我绝不是这里的专家。听到专家这样做,真是太棒了。 – hjavaher
是的,这将是伟大的:) –
它的坏主意,而不是使用StronglyTyped(模型)ViewBag 如此声明首先ViewModel,然后通过ViewModel将数据传递给View。
到目前为止你试过了什么? –