0

我有两张桌子

1.国家

  • ID
  • 国家的名字

和其他表是

2.状态

  • 州身份证
  • 州名
  • 国家 ID

我正在使用此代码在国家/地区的下拉列表中填充数据citycontroller.cs

ViewBag.countries = new SelectList(db.Couns.OrderBy(c => c.CountryName).ToList(), "ID", "CountryName");

create.cshtml

 @Html.DropDownList("Select Country", ViewBag.countries as SelectList)

我想要根据国家下拉列表的选择填充状态下拉列表的功能应该做什么??????

4

3 回答 3

0

您可以使用 jQuery ajax 在选择国家/地区时加载州。

<script type="text/javascript">
 $(function(){
    $("#Country").change(function(){
      var states=""; 
      var countryId=$(this).val();
      $.getJSON("@Url.Action("GetStates","Home")/"+countryId,function(data){
           $.each(data,function(index,item){
              states+="<option value='"+item.ID+"'>"+item.StateName+"</option>";
           });
             $("#States").html(states);
      });

    });    
 });    

</script>

假设Country是您的 Country DropDownStates的 ID,并且是您的 States Dropdow 的 ID,并且您有一个操作方法,它接受国家 ID 作为参数并以 JSON 格式获取状态

public ActionResult GetStates(int id)
{
  var stateList=repo.GetStatesForCountry(id);
  return Json(stateList,JsonRequestBehaviour.AllowGet);
}

假设repo.GetStatesForCountry根据传递的国家 ID 返回一个国家列表。State您可以用返回类对象列表的方法调用替换该函数调用。

建议:我会尽量避免使用动态 ViewBag /ViewData 方法来填充 Dropdwon 并切换到更强类型的方法。是一个如何做到这一点的例子。

于 2012-08-08T13:50:59.110 回答
0

如果您已经将状态列表下载到客户端计算机,那么 knockout.js 将是可行的方法。如果您只想下载与所选国家/地区相关的州,则应在选择国家/地区时对服务器进行 AJAX 调用,并让成功功能填充州列表。

于 2012-08-08T13:44:35.553 回答
0

您将需要为此使用Ajax调用。您可能想看看我为与您的问题类似的问题提供的答案

于 2012-08-08T13:46:49.957 回答