数据从 AJAX 调用传递到控制器但获取空值
Posted
技术标签:
【中文标题】数据从 AJAX 调用传递到控制器但获取空值【英文标题】:Data pass from AJAX call to Controller but getting null values 【发布时间】:2021-08-23 20:04:06 【问题描述】:从下面的代码中,我想将数据发送到我的控制器,但是当我将调试点添加到我的控制器函数时,然后接收到所有值 null。我不替换数据类型是文本到 json。
jQuery.ajax(
url: "../VisitorEntry/SaveVisitorEntry",
type: "POST",
//data: "visitpurpose:'" + visitpurpose + "'",
data:
visitpurpose: visitpurpose,
txt_visitor_name: txt_visitor_name,
txt_company_name: txt_company_name,
txt_emp_name: txt_emp_name,
txt_phone: txt_phone,
txt_designation: txt_designation,
txt_address: txt_address,
txt_country_name: txt_country_name,
txt_state_name: txt_state_name,
txt_city_name: txt_city_name
,
dataType: "text",
traditional: true,
//contentType: "application/json; charset=utf-8",
processData: false,
success: function (response)
debugger
jQuery("#wait").css("display", "none");
QrCodeImage.setAttribute('src', "data:image/jpg;base64," + response);
,
error: function (response)
debugger
jQuery("#wait").css("display", "none");
console.log(response.responseText);
);
以下是我在控制器上的功能,我想接收所有值但接收 null。
[HttpPost]
public ActionResult SaveVisitorEntry(string visitpurpose, string txt_visitor_name, string txt_company_name, string txt_emp_name, string txt_phone,
string txt_designation, string txt_address, string txt_country_name, string txt_state_name, string txt_city_name, string txt_emp_number)
VisitorEntryDA pdm = new VisitorEntryDA();
DataSet dataSet = new DataSet();
Bitmap qrCodeImage = null;
dataSet = pdm.visitorEntry(visitpurpose, txt_visitor_name, txt_company_name, txt_emp_name, txt_phone,
txt_designation, txt_address, txt_country_name, txt_state_name, txt_city_name, txt_emp_number);
for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++)
string iserror = dataSet.Tables[0].Rows[i]["iserror"].ToString();
string message = dataSet.Tables[0].Rows[i]["message"].ToString();
string id = dataSet.Tables[0].Rows[i]["visitor_id"].ToString();
QRCodeGenerator qrGenerator = new QRCodeGenerator();
//var data = "visitpurpose":visitpurpose;
QRCodeData qrCodeData = qrGenerator.CreateQrCode(id, QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);
qrCodeImage = qrCode.GetGraphic(20);
ImageConverter converter = new ImageConverter();
return Content(Convert.ToBase64String(BitmapToBytes(qrCodeImage)));
【问题讨论】:
【参考方案1】:首先,通过将 c# 中的参数列表更改为单个类(在我的示例中,DTO 仅表示数据传输对象),让您的生活更轻松:
public class VisitorDto
public string visitpurpose get;set;
public string txt_visitor_name get;set;
public string txt_company_name get;set;
public string txt_emp_name get;set;
public string txt_phone get;set;
public string txt_designation get;set;
public string txt_address get;set;
public string txt_country_name get;set;
public string txt_state_name get;set;
public string txt_city_name get;set;
public string txt_emp_number get;set;
并在您的方法中使用,例如:
public ActionResult SaveVisitorEntry(VisitorDTO model)
...
你也可以删除 txt_ 的前缀,因为它有点麻烦,但我会留给你。
之后可能会起作用。
因为在您的 Ajax 类中,您的 Data:
是一个对象,正如您所声明的那样
Data:
.
- 是 javascript 中的对象语法。到达控制器时它为 null 的原因很可能是因为您发送了一个对象,但控制器期待字符串。
【讨论】:
感谢@Topher 的回复,但我仍然在控制器上的 DTO 中得到空值 对不起,我犯了一个错误。现在我正在获取数据。谢谢 没问题很高兴我能帮忙以上是关于数据从 AJAX 调用传递到控制器但获取空值的主要内容,如果未能解决你的问题,请参考以下文章