我试图找出我的代码有什么问题,我已经半疯了,所以需要一些帮助, 我的代码工作正常,实际上我的代码所做的是它动态获取表单2下拉列表,一个用于州和一个用于城市,当我选择任何状态时,其相应的城市从城市下拉列表中的数据库填充!,状态下拉列表是填充了州,但城市下拉列表填充了未定义的选项!,这是我面临的基本问题,我也粘贴我的代码,也许任何人都可以弄清楚它基本上是什么问题!
的HomeController
public class homeController : Controller
{
//
// GET: /home/
DataClasses1DataContext dd = new DataClasses1DataContext();
public ActionResult Index()
{
ViewBag.state = dd.tb_statecities.Select(m => new SelectListItem { Text = m.state }).Distinct().ToList();
return View();
}
public ActionResult city(string state)
{
var v = dd.tb_statecities.Where(m => m.state == state).Select(m => m.city).ToList();
return Json(v, JsonRequestBehavior.AllowGet);
}
}
INDEX.CSHTML
<script src="~/Scripts/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(function () {
$('#state').change(function () {
var val = $('#state').val();
$.get("home/city", { state: val }, function (data) {
var v="<option>Select</option>"
$.each(data, function (i, q) {
v += "<Option value=" + q.city + ">" + q.city + "</option>";
});
$('#city').html(v);
});
});
});
</script>
<div>
@Html.DropDownList("state", "Select")
@Html.DropDownList("city", new List<SelectListItem> { new SelectListItem{Text="Select",Value="0"}
});
答案 0 :(得分:0)
我猜测tb_statecities.city
是一个字符串,因此此查询返回的是List<string>
,而不是List<tb_statecity>
...
var v = dd.tb_statecities
.Where(m => m.state == state)
.Select(m => m.city)
.ToList();
这意味着在JavaScript中,q
已经是城市的名称,这解释了q.city
为undefined
的原因。试试这个......
$.each(data, function (i, q) {
v += "<Option value=" + q+ ">" + q + "</option>";
});