Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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# C、 NetCore 3.0-方法:[HttpGet]_C#_Mysql_Asp.net - Fatal编程技术网

C# C、 NetCore 3.0-方法:[HttpGet]

C# C、 NetCore 3.0-方法:[HttpGet],c#,mysql,asp.net,C#,Mysql,Asp.net,我在为特定用户从数组中检索数据时遇到问题-数组中有许多用户,我想为label1.Text中指定的用户检索数据 因此,第一: public async Task load_data() { var doing = await client.GetAllAsync(label1.Text); foreach (var dane in doing ) {

我在为特定用户从数组中检索数据时遇到问题-数组中有许多用户,我想为label1.Text中指定的用户检索数据 因此,第一:

public async Task load_data()
        {              
            var doing = await client.GetAllAsync(label1.Text);
            foreach (var dane in doing )
            {
                lbItems_1.Items.Add(dane.Name);
                lbItems_2.Items.Add(dane.Age);
                lbItems_3.Items.Add(dane.Data);
            }
        }
下一步:GetAllAsync

public async Task<IEnumerable<Table_test>> GetAllAsync(string user_name)
{
var response = await client.GetAsync(_baseUrl + "/api/user/" + user_name);
}
最后一节课:

[HttpGet]
        public async Task<IActionResult> Get(string user_name)
        {
            using (var c = new MySqlConnection(con_sql.MySQL))
            {
                var sql = @"SELECT * FROM table_test WHERE username = @username";
                var query = c.Query<Models.Table_test >(sql, new { username = user_name}, commandTimeout: 30);                
                return Ok(query);
            }
        }
我认为它很好地传递了参数-但是当我尝试为适当的用户下载数据时,我有:NotFound代码

为什么??想法


谢谢。

您应该能够在HttpGet属性中指定端点上的路由参数:

[HttpGet("{user_name}")]
public async Task<IActionResult> Get(string user_name) 
{ 
    using (var c = new MySqlConnection(con_sql.MySQL)) 
    { 
        var sql = @"SELECT * FROM table_test WHERE username = @username"; 
        var query = c.Query<Models.Table_test >(sql, new { username = user_name}, commandTimeout: 30); 
        return Ok(query); 
    } 
}
另一个选项是使用查询参数调用端点:

public async Task<IEnumerable<Table_test>> GetAllAsync(string user_name) 
{ 
    var response = await client.GetAsync(_baseUrl + "/api/user?user_name=" + user_name); 
}

所有这些文件都在同一个项目中?找不到什么代码?@LuttiCoelho-是的,所有这些文件。@JeroenvanLangen-编译器说问题是:var do=wait client.GetAllAsynclabel1.Text;仅此而已。我将补充说,下载所有数据或删除所有数据都有效-但对所选用户无效。如果我想添加两个WHERE条件,我可以为两个不同的参数定义两次路由路径吗?是的,请记住,在HttpGet属性中的路由中定义的参数是必需的。如果您希望条件是可选的,您可能应该使用查询参数sok-如果我有问题,我会回答您,谢谢!