他希望将DDL中所选项目的ID(从控制器中的数据库检索项目到ViewBag)从列表传递到控制器,它将自动处理。
如果值是字符串,则第一个代码可以正常工作,但对于int(具有ID)不起作用。
查看:
@using (Html.BeginForm("DDL", "Store", FormMethod.Post,
new { id = "Form1ID",
data_PeoplAction = @Url.Action("People")
}))
{
<fieldset>
<label for="Cities">Select a city</label>
@Html.DropDownList("Cities", ViewBag.Cities as SelectList,
new { id = "CitiesID" })
</fieldset>
}
<script src="@Url.Content("~/Scripts/populat.js")"></script>
如果CityCode是“LA”,则“NY”值正确传递,并且(字符串代码)数据的控制器更改(int ID)正确
ViewBag.Cities = new SelectList(DB.myBase, "CityCode", "CityName");
什么不适用于ID
的Controler:
public ActionResult DDL()
{
ViewBag.Cities = new SelectList(DB.myBase, "CityID", "CityName");
return View();
}
public ActionResult People(int ID)
{
var peop = from s in DB.myBase
where s.CityID == CityID
select s.Population;
ViewBag.Popul = peop;
return View();
}
populat.js:
$('#CitiesID').change(function () {
var URL = $('#Form1ID').data('PeoplAction');
$.getJSON(URL + '/' + $('#CitiesID').val(), function (data) {
});
});
第二个获得了良好的ID,但我无法传递给控制器。
$('#OneID').change(function () {
var e = document.getElementById("OneID");
var strUser = e.options[e.selectedIndex].value;
}
我将很感激帮助
答案 0 :(得分:0)
您可以使用attribute
的数据getJSON
将所选值作为参数发送到给定网址,而不是附加到网址。希望这能解决您的问题:
$('#OneID').change(function () {
var URL = $('#FormID').data('iLtAction');
var selectedValue = $(this).val();
$.getJSON(URL, { someValue : selectedValue }, function (data) {
});
});
从Controller获取someValue
。
了解更多信息getJSON