无法将 jquery ajax 中的多个数据参数传递给 razor OnPost
cannot pass multiple data parameters from jquery ajax to razor OnPost
我尝试使用“data:”以多种方式使用 ajax 传递多个参数
但并非所有参数都被传递。
这是 OnPost PageModel 方法:
public JsonResult OnPostCreate(Product product, int id, string name)
{
return new JsonResult(new { success = true });
}
ajax:
function SaveMe() {
var product = {
ProductId: 1,
ProductName: 'Any',
UnitsInStock: 2,
Discontinued: true,
};
var id = 1;
var name = 'Product1';
var data = {};
data.product = product;
data.id = id;
data.name = name;
$.ajax({
url: `?handler=Create`,
method: "post",
contentType: "application/json",
headers: {
"XSRF-TOKEN": $('input:hidden[name="__RequestVerificationToken"]').val()
},
data: JSON.stringify(data)
})
.done(function (response) {
alert(response.success);
});
};
而且我不想使用“url:”ajax 中的参数,例如:
url: `?handler=Create&id=2&name=Product1`
有人可以帮忙吗?
谢谢大家。
也许这对你有帮助;
function SaveMe() {
var product = {
ProductId: 1,
ProductName: 'Any',
UnitsInStock: 2,
Discontinued: true,
};
var id = 1;
var name = 'Product1';
product.id = id; // ----------------------- (*1)
product.name = name; // ------------------- (*2)
$.ajax({
url: `?handler=Create`,
method: "post",
contentType: "application/json",
headers: {
"XSRF-TOKEN": $('input:hidden[name="__RequestVerificationToken"]').val()
},
data: product // ----------------------- (*3)
})
.done(function (response) {
alert(response.success);
});
};
*1 : 在服务器端,您的产品模型没有“id”和“名称”属性 但是当您要一起使用它们时,您一起准备 client-side 模型。
*2 :也是另一种选择;将“id”和“name”属性 添加到具有 [NotMapped] 属性的产品模型。未映射的属性可以帮助您将额外的 属性 添加到数据库 table.
中未显示的模型中
public class Product
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public int UnitsInStock { get; set; }
public bool Discontinued { get; set; }
[NotMapped]
public int id { get; set; }
[NotMapped]
public string name { get; set; }
{
*3 :使用 JSON.stringify 不是必需的。 Post 数据作为 json.
我尝试使用“data:”以多种方式使用 ajax 传递多个参数 但并非所有参数都被传递。
这是 OnPost PageModel 方法:
public JsonResult OnPostCreate(Product product, int id, string name)
{
return new JsonResult(new { success = true });
}
ajax:
function SaveMe() {
var product = {
ProductId: 1,
ProductName: 'Any',
UnitsInStock: 2,
Discontinued: true,
};
var id = 1;
var name = 'Product1';
var data = {};
data.product = product;
data.id = id;
data.name = name;
$.ajax({
url: `?handler=Create`,
method: "post",
contentType: "application/json",
headers: {
"XSRF-TOKEN": $('input:hidden[name="__RequestVerificationToken"]').val()
},
data: JSON.stringify(data)
})
.done(function (response) {
alert(response.success);
});
};
而且我不想使用“url:”ajax 中的参数,例如:
url: `?handler=Create&id=2&name=Product1`
有人可以帮忙吗? 谢谢大家。
也许这对你有帮助;
function SaveMe() {
var product = {
ProductId: 1,
ProductName: 'Any',
UnitsInStock: 2,
Discontinued: true,
};
var id = 1;
var name = 'Product1';
product.id = id; // ----------------------- (*1)
product.name = name; // ------------------- (*2)
$.ajax({
url: `?handler=Create`,
method: "post",
contentType: "application/json",
headers: {
"XSRF-TOKEN": $('input:hidden[name="__RequestVerificationToken"]').val()
},
data: product // ----------------------- (*3)
})
.done(function (response) {
alert(response.success);
});
};
*1 : 在服务器端,您的产品模型没有“id”和“名称”属性 但是当您要一起使用它们时,您一起准备 client-side 模型。
*2 :也是另一种选择;将“id”和“name”属性 添加到具有 [NotMapped] 属性的产品模型。未映射的属性可以帮助您将额外的 属性 添加到数据库 table.
中未显示的模型中 public class Product
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public int UnitsInStock { get; set; }
public bool Discontinued { get; set; }
[NotMapped]
public int id { get; set; }
[NotMapped]
public string name { get; set; }
{
*3 :使用 JSON.stringify 不是必需的。 Post 数据作为 json.