使用Ajax更新ViewBag数据ASP.NET MVC4

问题描述:

我目前有两个类呼叫城市和地区(分别为1对多关系)。在我看来,我有2个下拉列表,一个用于所有城市和另一个对于区域(使用ViewBag填充)。当选择一个城市时,我希望区域的下拉列表仅显示该城市的区域,而无需重新加载整个视图。我之前使用过Ajax,但只是为了重新填充模型数据而不是ViewBag。那么我怎样才能使用Ajax和ViewBag呢?使用Ajax更新ViewBag数据ASP.NET MVC4

+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); 

} 

然后在t他认为“_DistrictsByCity”所有你创建的是下拉列表。那么HTML将被并置于与该ID的DIV中“区,选择”

让我知道如果有什么不清楚

+0

多数民众赞成我该怎么做,但我绝不是这里的专家。听到专家这样做,真是太棒了。 – hjavaher

+0

是的,这将是伟大的:) –

它的坏主意,而不是使用StronglyTyped(模型)ViewBag 如此声明首先ViewModel,然后通过ViewModel将数据传递给View。