Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在代码隐藏中从ajax请求获取变量_C#_Ajax_Asp.net Core 2.0 - Fatal编程技术网

C# 在代码隐藏中从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+" - "

所以,不久前,我需要发出ajax请求来访问隐藏的代码。我做到了()

但现在我正在使用asp.NETCore2.0,它的工作方式有所不同。好吧,现在我可以发出请求了,但是由于某种原因,变量是空的(只有在代码后面,在客户端它们才有内容。这可能没什么大不了的,但我不明白为什么

下面是我的ajax函数:

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; }
    }