我有两张桌子
1.Country
和其他表是
2.State
我正在使用此代码在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)
我想要根据国家/地区下拉列表的选择填写状态下拉列表的功能应该做什么?????
答案 0 :(得分:0)
如果你已经下载了状态列表到客户端机器,那么knockout.js将是你要走的路。如果您只想在选择国家后下载与所选国家/地区相关的状态,则当选择国家/地区并且成功功能填充州名单时,您需要对服务器进行AJAX调用。
答案 1 :(得分:0)
您需要使用Ajax
来电。您可能希望查看我提供的类似于您的问题的this答案。
答案 2 :(得分: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
是您的国家/地区DropDown的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并切换到更强类型的方法。 Here是一个如何做到的例子。