C# 在代码隐藏中从ajax请求获取变量
所以,不久前,我需要发出ajax请求来访问隐藏的代码。我做到了() 但现在我正在使用asp.NETCore2.0,它的工作方式有所不同。好吧,现在我可以发出请求了,但是由于某种原因,变量是空的(只有在代码后面,在客户端它们才有内容。这可能没什么大不了的,但我不明白为什么 下面是我的ajax函数:C# 在代码隐藏中从ajax请求获取变量,c#,ajax,asp.net-core-2.0,C#,Ajax,Asp.net Core 2.0,所以,不久前,我需要发出ajax请求来访问隐藏的代码。我做到了() 但现在我正在使用asp.NETCore2.0,它的工作方式有所不同。好吧,现在我可以发出请求了,但是由于某种原因,变量是空的(只有在代码后面,在客户端它们才有内容。这可能没什么大不了的,但我不明白为什么 下面是我的ajax函数: function Ajax(expression1, expression2, url, json, error) { console.log(expression1+" - "
function Ajax(expression1, expression2, url, json, error) {
console.log(expression1+" - "+ expression2);
var request = { email: expression1, password: expression2 }
$.ajax({
url: url,
method: 'post',
contentType: 'application/json',
data: JSON.stringify(request),
dataType: 'json',
success: function (resp) {
console.log(request);
if (expression1 === null || expression2===null)
window.location.href = resp[json];
else
document.getElementById(error).innerHTML = resp[json];
},
error: function (error) {
}
})
}
c#代码:
ajax函数发出请求并触发c#函数,然后返回我请求的内容。唯一的问题是空变量。为什么会发生这种情况
编辑:根据请求编辑用户类:
public class User
{
[JsonProperty(PropertyName ="email")]
public string Email { get; set; }
[JsonProperty(PropertyName = "name")]
public string Name { get; set; }
[JsonProperty(PropertyName = "password")]
public string Password { get; set; }
}
参数绑定失败,因为您正在此处发出post请求。 您必须将
[FromBody]
属性添加到参数中
您可以在此处获得有关参数绑定的更多信息:
您还将对象作为参数传递,因此您必须将路由参数更改为包含电子邮件和密码属性的对象,或者将内容类型更改为“application/x-www-form-urlencoded”,并传递一个查询字符串,如“email=…&password=…”仅此而已?我添加了[FromBody]标记,但它仍然不会收到任何值。因此,我按照建议创建了该对象,它工作了。但现在我有了后续操作。我也有一个密码属性。不知怎的,它将名称反序列化到密码字段。这很奇怪。我甚至在用户类中添加了标记(?[JsonProperty(“name”)]为了让它知道它应该在哪里,但它保持不变…你能提供你的用户类吗?你尝试过向你的请求对象添加一个“name”属性吗?哦,我明白了。我在这里粘贴了错误的ajax函数。这是用于应用程序登录的,因此密码,另一个有一个name字段。但它基本上是sa我,有一个例外,这个有5个参数,另一个有4个。但是我仍然用4个参数调用函数,它仍然跳转到一个有5个参数。奇怪。。。
public class User
{
[JsonProperty(PropertyName ="email")]
public string Email { get; set; }
[JsonProperty(PropertyName = "name")]
public string Name { get; set; }
[JsonProperty(PropertyName = "password")]
public string Password { get; set; }
}