c# - 为什么我的 ajax 向控制器发送空值?
问题描述
我使用 AJAX 向数据库添加和编辑数据。我已经尝试了所有方法,但返回到我的 [HttpPost] 操作方法的最终值为 null。
ajax文件:
function AddUpdateValue() {
$(document).ready(function () {
var upid = $('#hide').val();
if(upid=="00000000-0000-0000-0000-000000000000"){
$(document).on("click", "#updateEditBtn",
function(){
var formData = {
CompanyEmail: $('#txtCompanyEmail').val(),
IntegrationName: $('#txtIntegrationName').val()
}
console.log(formData.CompanyEmail+" "+formData.IntegrationName+" "+upid+" First for Add");
var forgeryIdAdd = $('#forgeryToken').val();
$.ajax({
url: '/Integrations/AddEditIntegration',
data: {val:formData, rowNum: upid},
headers:{'VerificationToken':forgeryIdAdd},
type: 'POST',
success: function () {
toastr.success("Data successfully added");
},
error: function (jqXHR) {
toastr.warning("Data not added "+jqXHR.statusText +jqXHR.status);
}
});
});
}
else{
var formData = {
CompanyEmail: $('#txtCompanyEmail').val(),
IntegrationName: $('#txtIntegrationName').val()
}
console.log(formData.CompanyEmail+" "+formData.IntegrationName+" "+upid+" Second for edit");
var forgeryIdAdd = $('input[name="__RequestVerificationToken"]').val();
$.ajax({
url: '/Integrations/AddEditIntegration',
data:{val:formData, rowNum:upid},
headers: { 'VerificationToken': forgeryId },
type: 'POST',
dataType: 'json',
success: function (result) {
if (result.isValid) {
toastr.success("Information save successfully.");
$('#Popup').dialog('destroy').remove();
ReloadEmailTemplateGrid();
}
else {
toastr.error("Information saving failed.");
}
$body.removeClass("loading");
},
error: function (jqXHR) {
toastr.error('Request Status: ' + jqXHR.status + ' Status Text: '
+ jqXHR.statusText + ' ' + jqXHR.responseText);
$body.removeClass("loading");
}
});
}
});
}
后控制器
[HttpPost]
[AjaxValidateAntiForgeryToken]
public ActionResult AddEditIntegration ([Bind(Exclude ="IntegrationId")]Integrations val, Guid? rowNum)
{
if (rowNum.HasValue)
{
IntegrationsProcessor db = new IntegrationsProcessor(new MCNIDbContext());
Integrations temp = db.GetIntegrationData(rowNum.Value);
temp.IntegrationName = val.IntegrationName;
temp.CompanyEmail = val.CompanyEmail;
db.UpdateIntegrationRow(temp);
return RedirectToAction("Details");
}
else
{
IntegrationsProcessor db = new IntegrationsProcessor(new MCNIDbContext());
Guid newUser = Guid.NewGuid();
Integrations item = new Integrations();
val.IntegrationId = newUser;
db.AddRow(item);
return RedirectToAction("Details");
}
}
防伪令牌,它在 formData 中接收的数据,一切正常,只是它返回 null。
解决方案
为什么你不使用这个 ajax
.....
var formData = {
CompanyEmail: $('#txtCompanyEmail').val(),
IntegrationName: $('#txtIntegrationName').val() ,
rowNum: upid
};
.....
$.ajax({
url: '/Integrations/AddEditIntegration',
data: formData,
.....
并将 rowNum 添加到集成
public class Integrations
{
....
public string CompanyEmail {get; set;}
public string IntegrationName {get; set;}
public Guid? RowNum {get; set;}
.....
}
并调整动作
public ActionResult AddEditIntegration (Integrations integrations)
推荐阅读
- c# - C# 选择日期 - 显示与文本文件中的日期相关的数据
- typescript - 使用图标的角度谷歌地图上不同折线的不同颜色
- java - 从一个 OutputStream 写入另一个 InputStream
- c# - 是否有可以配置 ELMAH 以自动跟踪用户和 CRUD 活动的设置?
- python - 对非统一的多维数组执行 Numpy 操作
- css - 我需要帮助通过附加 CSS 编辑移动导航栏的颜色
- java - 用于转换对象实例的 Java IF-ELSE 语句的替代方法
- c++ - 从字符串c ++中删除n个字符
- vba - 如果工作表中任何单元格的值被删除或更新,VBA 将更改 exel 单元格的背景颜色
- c++ - 在c ++ stl中使用堆栈时出现分段错误?