【发布时间】:2012-04-12 18:49:33
【问题描述】:
我正在 MVC3 中创建一个应用程序,其中我有很多下拉菜单 现在,根据在第一个下拉列表中选择的值,填充第二个下拉列表。 我需要为此编写 Ajax,但我很难做到。
我有我的第一个下拉菜单“选择课程”,现在选择哪一门课程借助该特定课程 ID 从数据库中选择相应的状态。
例如,如果课程是“MCA”,则州下拉菜单必须填充马哈拉施特拉邦、拉贾斯坦邦等州。
我为 Ajax 尝试了以下代码,但它不起作用并给我一个错误
$("#Course").change(function () {
var Courseid = $("#Course").val();
var urlCourselocation = '@Url.Action("FetchstatebyCourse")';
$.ajax({
type: "POST",
url: urlCourselocation,
data: { id: Courseid },
success: function (data) {
$('#State').empty();
$('#State')
.append($('<option>', { value: "0" })
.text("-- Select State --"));
$.each(returndata, function (key, value) {
$('#State')
.append($('<option>', { value: value.Value })
.text(value.Text));
});
}
});
});
在控制器中我写了以下函数:
public ActionResult FetchHobbyDetailByHobbyId(int Id)
{
LearnerService learnerservice = new LearnerService();
/* Here is some Code to fetch the state id from the database*/
ICollection<ProvincialState> state = learnerservice.FetchStateByStateid(stateid);
ViewBag.State = state;
if (HttpContext.Request.IsAjaxRequest())
return Json(new SelectList(
state,
"ProvincialStateID",
"ProvincialStateName"));
return View();
}
如果我错了,请帮助我并纠正我。
【问题讨论】:
-
错误是什么,是在服务器端还是客户端?
-
@GregB 嘿,抱歉,它没有给我错误,但是当我选择“课程”时,它不会填充状态下拉列表中的任何内容:“--选择状态---”
-
如果您安装了 firebug,我会查看帖子响应并查看您返回的数据类型(可能为空)。此外,我认为您可能只想考虑返回 Json(state) 并查看它为您提供了什么。此外,单步执行服务器端代码并确保它返回一些内容
-
@GregB 嘿,这可能会让你感到震惊,但在调试时我可以看到它返回的内容,这正是我想要获取的,但返回的值没有显示在下拉列表中
标签: asp.net-mvc asp.net-mvc-3 jquery drop-down-menu