我正在动态地向2个下拉列表添加值,到表单加载期间填充的状态下拉列表,当用户点击任何状态时jquery触发时必须填充它,我面临的问题是,状态下拉列表很容易填充,但当我选择特定状态时,城市下拉列表不包含任何值, state和city是存储在db中的表中的字符串 我将在下面发布我的代码,以便任何人都可以解决我的代码有什么问题
的HomeController
public ActionResult registration()
{
ViewBag.states = dd.tb_statecities.Select(m => new SelectListItem { Text=m.state}).Distinct().ToList();
return View();
}
public ActionResult get(string state)
{
var v = (dd.tb_statecities.Where(m => m.state == state).Select(m => m.city)).ToList();
return Json(v, JsonRequestBehavior.AllowGet);
}
的jquery ..
$(function () {
$('#states').change(function () {
var val = $('#states').val();
$.get("home/get", { state: val }, function (data) {
var v = "<option>Select</option>"
$.each(data, function (i, q) {
alert("hello");
v += "<option value=" + q + ">" + q + "</option>";
});
$('#city').html(v);
});
});
});
registration.cshtml
State @ Html.DropDownList(&#34; states&#34;,&#34; Select&#34;)
</tr>
<tr class="t">
<td>City</td>
<td>@Html.DropDownList("city", new List<SelectListItem> { new SelectListItem{Text="Select",Value="0"}})</td>
</tr>
答案 0 :(得分:0)
问题是当您使用ViewBag时,您没有发送值/ ID, 我建议你在ViewBag中使用SelectList:
ViewBag.states = new SelectList(db.states, "ID", "states");
然后你可以使用JQuery获取值:
var val = $('#states').val();