【问题标题】:Using Ajax to update ViewBag data ASP.NET MVC4使用 Ajax 更新 ViewBag 数据 ASP.NET MVC4
【发布时间】:2014-05-22 20:34:39
【问题描述】:

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

【问题讨论】:

  • 到目前为止你尝试了什么?

标签: asp.net-mvc-4


【解决方案1】:

您不能重新填充 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 中

如果有什么不清楚的地方告诉我

【讨论】:

  • 我会这样做,但我绝不是这里的专家。听专家介绍这种方式真是太棒了。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    相关资源
    最近更新 更多