【发布时间】:2021-03-05 17:40:03
【问题描述】:
net 和我的代码有不同的部分。首先是模型。 哪里的数据是这样的
public string skuItem { get; set; }
然后我在我正在使用的地方使用 chtml
<table id="submissionTable" class="table table-bordered">
<thead>
<tr>
<td>Sample ID</td>
<td>Additional Comments</td>
<td>Acid-stable amino acids</td>
</tr>
</thead>
<tr id="tablerow0">
<td>
<div class="form-group">
<label asp-for="skuItem[0]" class="control-label"></label>
<input type="text" asp-for="skuItem[0]" cols="20" rows="5" class="form-control" style="border-radius: 12px;" />
<span asp-validation-for="skuItem[0]" class="text-danger"></span>
</div>
</td>
</tr>
</table>
<p>
<button id="add" type="button" class="btn btn-primary">Add</button>
</p>
添加其他行的脚本正在运行
<script>
var counter = 1;
$(function () {
$('#add').click(function () {
$('<tr id="tablerow' + counter + '"><td>' +
'<input type="text" class="text-box single-line" name="skuItem[' + counter + ']" value="" required="required" />' +
'<button type="button" class="btn btn-primary" onclick="removeTr(' + counter + ');">Delete</button>' +
'</td>' +
'</tr>'
).appendTo('#submissionTable');
counter++;
return false;
});
});
function removeTr(index) {
if (counter > 1) {
$('#tablerow' + index).remove();
counter--;
}
return false;
}
Ladda.bind('.btn', { timeout: 1000 });
</script>
我的ajax函数是这样的
function SubmitAddEdit(form) {
if ($(form).valid()) {
var data = $(form).serializeArray();
data = JSON.stringify(data);
alert(data);
$.ajax({
type: 'POST',
url: apiurl,
data: data ,
contentType: 'application/json',
dataType:'json',
success: function (data) {
if (data.success) {
popup.modal('hide');
toastr.success(data.message);
dataTable.ajax.reload();
} else {
toastr.error(data.message)
}
}
});
}
return false;
}
Till this point think is working check this picture
一旦 ajax 被执行,post 控制器将赋值为 null
please check this controller where there is 4 count but somehow skuItem is null
请指导我为什么我的代码有错误,特别是当 javascript 可以具有价值但在 ajax 发布时我在控制器中得到空值
[HttpPost]
public async Task<IActionResult> PostPurchaseItems([FromBody] List<PurchaseItems> purchase)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
try
{
if (purchase[0].purchaseItemsId == Guid.Empty)
{
for (int i = 0; i <= purchase.Count; i++)
{
ApplicationUser appUser = await _userManager.GetUserAsync(User);
purchase[0].purchaseId = Guid.NewGuid();
purchase[0].CreatedById = appUser.Id;
purchase[0].CreatedByName = appUser.FullName;
purchase[0].CreateBy = appUser.FullName;
purchase[0].CreateAt = DateTime.Now;
purchase[0].DeleteFlag = 0;
_context.PurchaseItems.Add(purchase[0]);
await _context.SaveChangesAsync();
}
return Json(new { success = true, message = "Add new data success." });
}
else
{
ApplicationUser appUser = await _userManager.GetUserAsync(User);
purchase[0].CreatedById = appUser.Id;
purchase[0].CreatedByName = appUser.FullName;
purchase[0].CreateBy = appUser.FullName;
purchase[0].CreateAt = DateTime.Now;
List<Contact> contact = _context.Contact.Where(x => x.customerId.Equals(purchase[0].customerId) && x.DeleteFlag != 1).ToList();
_context.Update(purchase);
await _context.SaveChangesAsync();
return Json(new { success = true, message = "Edit data success." });
}
}
catch (Exception ex)
{
return Json(new { success = false, message = ex.Message });
}
}
【问题讨论】:
-
请粘贴您的控制器代码
-
@FakharAhmadRasul 我已经编辑了谢谢!
-
由于您在控制器操作中接受的参数名为 purchase,因此您从 ajax 发送的数据对象必须包含一个名为 purchase 的数组。您的问题可能正在发生,因为您的 ajax 中的数据可能没有名为 purchase 的数组。另外我确信这个问题的解决方案已经存在于 stackoverflow 上,所以最好删除你的问题。
-
@FakharAhmadRasul 你有这方面的例子吗?
标签: javascript asp.net ajax asp.net-core-mvc