我已经创建了一个ajax Post,其目标是我的控制器中称为edit的控制器中的action方法,但是我面临的问题是除了null以外,其他任何值都没有设置。
应该发生的是,在“ .save-user”按钮上单击时,它应该使用ID来获取值并将其存储到将在JSON.stringify方法中使用的局部变量中。
我对ajax和jquery还是陌生的,因此将不胜感激任何帮助或指导。
我的提交按钮:
@using(Html.BeginForm("Edit", "LansingMileage", FormMethod.Post))
{
<button class="save-user edit-mode" type="submit"name="Save">Save</button>
}
我的JQuery / Ajax:
$('.save-user').on('.click', function saveClick() {
var expense = $("#expense").val();
var travel = $("#travel").val();
var trip = $("#trip").val();
var newRecords = jQuery.makeArray(expense, travel,trip);
var dataToPost = JSON.stringify({ methodParam: newRecords });
$.ajax({
type: "POST",
url: "/LansingMileage/Edit",
contentType: "application/json; charset=utf-8",
datatype: 'JSON',
data: dataToPost,
traditional: true
});
控制器:
public ActionResult Edit([Bind(Include = "ExpMonthYr,TripType,TravelDate")]List<LansingMileage> methodParam)
{
if (ModelState.IsValid)
{
try
{
db.Entry(methodParam).State = System.Data.Entity.EntityState.Modified;
db.SaveChanges();
}
catch (Exception ex)
{
}
return RedirectToAction("Index");
}
return View(methodParam);
}
答案 0 :(得分:1)
编辑:首先,您需要确定newRecords
变量的构造方式。我认为问题在于您对jquery.makeArray的使用。尝试使用Javascript创建一个对象,该对象的键与C#对象的属性匹配。给它适当的值,然后将该对象推入数组。
这应该可以解决您的问题,因为现在您的控制器正在等待一个列表(使用javascript数组)。
您传递给stringify方法的是一个对象,该对象的键值为数组,而您应该对数组进行字符串化或发送以使其与控制器参数匹配。