我有一个带有下拉菜单和部分视图的简单网页。我正在尝试根据下拉选定值更改时启动的ajax调用的结果来更新部分视图。我可以执行控制器操作,但是我传递的参数始终为null。
我尝试了以下方法来传递数据。
var formData = new FormData();
formData.append('Id', managerId)
data:formData,
data: { 'Id': managerId } ,
data: JSON.stringify({ 'Id': managerId } ),
这是控制器动作。我使用默认的MVC路由,没有定义其他路由。
[HttpPost]
public ActionResult GetEmployees(string Id)
{
if (string.IsNullOrEmpty(Id))
{
Id = "2";
}
long numberId = Convert.ToInt64(Id);
List<SEmployee> lstEmp = db.SEmployees.Where(x => x.LkupParentManagerId == numberId).ToList();
return PartialView("_EmployeeTable", lstEmp);
}
这是完整的Ajax调用:
$(document).ready(function () {
$("#ddManager").change(function () {
var managerId = this.value;
var formData = new FormData();
var form = $('form').serialize();
formData.append('Id', managerId);
//alert(managerId);
$.ajax({
url: "/SEmployees/GetEmployees",
type: 'POST',
data:formData,
//data: { 'Id': managerId } ,
//data: JSON.stringify({ 'Id': managerId } ),
processData: false,
success: function (result) {
//alert(result);
$("#tblEmployees").html(result);
},
error: function () {
alert('Failed to retrieve the Employees.');
}
});
});
});
这是视图中的下拉列表。
<div class="form-group">
@Html.LabelFor(model => model.SelectedId, htmlAttributes: new { @class = "control-label required" })
<div>
@Html.DropDownListFor(model => model.SelectedId, Model.LstSelectManagers, new { @id = "ddManager", @class = "form-control", @margin = "auto" })
@Html.ValidationMessageFor(model => model.SelectedId, "", new { @class = "text-danger", AutoPostBack = "True" })
</div>
</div>
我尝试了以上三种不同的方式将数据从视图传递到控制器。呼叫转到控制器,但不转到数据。请帮助我解决ajax调用问题。预先感谢。
答案 0 :(得分:0)
将此用于您的ajax
$.ajax({
url: "/SEmployees/GetEmployees/" + managerId,
type: 'POST',
processData: false,
success: function (result) {
//alert(result);
$("#tblEmployees").html(result);
},
error: function () {
alert('Failed to retrieve the Employees.');
}
});