Javascript 我想在MVC DropdownFor中发布下拉文本,而不是值
我想知道我是否有可能在MVC中发布嵌套下拉列表中的文本值 我已经能够用我的数据库值填充下拉列表,当它选择第一个下拉列表时,它会自动用json结果填充第二个下拉列表。我想发布下拉列表中的文本值,可以吗 这是我的带有JSON调用的控制器Javascript 我想在MVC DropdownFor中发布下拉文本,而不是值,javascript,jquery,asp.net-mvc,json,drop-down-menu,Javascript,Jquery,Asp.net Mvc,Json,Drop Down Menu,我想知道我是否有可能在MVC中发布嵌套下拉列表中的文本值 我已经能够用我的数据库值填充下拉列表,当它选择第一个下拉列表时,它会自动用json结果填充第二个下拉列表。我想发布下拉列表中的文本值,可以吗 这是我的带有JSON调用的控制器 [HttpPost] public ActionResult Index(SchoolRegViewModel model, HttpPostedFileBase Logo) { var queryCountry = _countryState.GetAll
[HttpPost]
public ActionResult Index(SchoolRegViewModel model, HttpPostedFileBase Logo)
{
var queryCountry = _countryState.GetAllCountry().Select(s => new SelectListItem
{
Value = s.CountryId.ToString(),
Text = s.CountryName,
Selected = false
});
model.Country = queryCountry.AsEnumerable();
var country = model.Country.Select(x => x.Text).Single();
if (ModelState.IsValid)
{
try
{
....
}
catch (Exception ex)
{
throw ex;
}
}
return View(model);
}
public JsonResult StateList(int? id)
{
if (id != null)
{
var state = _countryState.GetAllState(id.Value);
return Json(new SelectList(state, "CountryId", "StateName"), JsonRequestBehavior.AllowGet);
}
else
{
return Json(new { }, JsonRequestBehavior.AllowGet);
}
}
这是用json结果填充第二个下拉列表的jquery
jQuery(function ($) {
$(function ()
{
$('#CountryId').change(function () {
$.getJSON('/Registration/Registration/StateList/' + $('#CountryId').val(), function (data) {
var items = '<option>-- Select State --</option>';
$.each(data, function (i, state) {
items += "<option value = '" + state.Value + "'>" + state.Text + "</option>";
});
$('#State').html(items);
$('#State option:selected').text();
});
});
});
})
看法
只需使value参数与您为文本输入的参数相同
new SelectList(state, "StateName", "StateName")
以及:
但它是否仍将发送CountryId以返回状态列表Json??因为我这样做了,但它没有返回状态列表,因为json没有得到ID而不是名称,所以我如何绕过它来发送json的ID和发布数据库的文本??你不能。过账价值就是过账价值。你可以发布id,然后使用id从数据库中查找内容以获取文本,在需要的情况下,但是,如果你想要文本,你必须发布文本。是的,我认为这是可能的,谢谢你的帮助
new SelectList(state, "StateName", "StateName")
items += "<option value = '" + state.Text + "'>" + state.Text + "</option>";