我是mvc的新手并且已经做了很多寻找,但我无法弄清楚为什么这不起作用。
我有以下查看代码:
$(function() {
$("#ddlNumberOfRecords").change(function() {
var numberOfRecords = $("#ddlNumberOfRecords").val();
$.ajax({
type: "POST",
url: '@Url.Action("NumberOfRecordsChanged")',
data: { numberOfRecords: numberOfRecords },
success: function(returndata) {
if (!returndata.ok) {
window.alert(' error : ' + returndata.message);
} else {
$('#Grid').html(returndata);
}
}
});
});
});
@Html.DropDownList("ddlNumberOfRecords", Model.NumberOfRecordsSelectList)
有人可以告诉我这有什么问题吗?另外,有没有办法调试该JavaScript?我在那里放了断点,但它们从不加载。
编辑:这是我的行动。还没有真正的内容,因为我只是想让它在这一点上起作用。但我有一个断点,它永远不会受到打击。[HttpPost]
public ActionResult NumberOfRecordsChanged(int numberOfRecords)
{
return null;
}
答案 0 :(得分:0)
使用您显示的所有内容,代码可以100%正常运行。我做了一个模拟来证明这一点。
<强>控制器强>
public ActionResult Index()
{
ViewModel model = new ViewModel
{
NumberOfRecordsSelectList = new List<SelectListItem>
{
new SelectListItem
{
Selected = false,
Text = "one",
Value = "1",
},
new SelectListItem
{
Selected = false,
Text = "two",
Value = "2",
},
}
};
return View(model);
}
[HttpPost]
public ActionResult NumberOfRecordsChanged(int numberOfRecords)
{
return null;
}
查看强>
@model MvcApplication1.Models.ViewModel
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
$("#ddlNumberOfRecords").change(function() {
var numberOfRecords = $("#ddlNumberOfRecords").val();
$.ajax({
type: "POST",
url: '@Url.Action("NumberOfRecordsChanged")',
data: { numberOfRecords: numberOfRecords },
success: function (returndata) {
//No return data proviced
//if (!returndata.ok) {
// window.alert(' error : ' + returndata.message);
//} else {
// $('#Grid').html(returndata);
//}
}
});
});
});
</script>
@Html.DropDownList("ddlNumberOfRecords", Model.NumberOfRecordsSelectList)
如果您收到的其他错误超过了请分享您创建列表项的方式,错误是什么,以及与问题相关的任何其他详细信息。感谢。
答案 1 :(得分:-1)
您似乎正在尝试通过下拉列表中的项目,但实际上是通过所选项目的值发送。
如果是这样,那......
var numberOfRecords = $("#ddlNumberOfRecords").val();
应该是......
var numberOfRecords = $("#ddlNumberOfRecords option").size();