【问题标题】:C#, NetCore 3.0 - Method : [HttpGet]C#,Net Core 3.0 - 方法:[HttpGet]
【发布时间】:2019-12-15 14:41:54
【问题描述】:

我在从数组中为特定用户检索数据时遇到问题 - 数组中有很多用户,我想为 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 code 是什么?
  • @LuttiCoelho - 是的,所有人。
  • @JeroenvanLangen - 编译器说问题是: var doing = await client.GetAllAsync(label1.Text);仅此而已。
  • 我会补充一点,下载所有数据或删除所有数据都可以 - 但它不适用于所选用户。

标签: c# mysql asp.net


【解决方案1】:

您应该能够在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); 
}

【讨论】:

  • 而如果我想添加两个WHERE条件,我可以为两个不同的参数定义两次Route路径吗?
  • 是的,请记住,路由中定义的参数(在HttpGet 属性中)是必需的。如果您希望条件是可选的,您可能应该使用查询参数
  • 好的 - 如果我有问题我会回答你,谢谢!
猜你喜欢
  • 2020-01-30
  • 2018-12-20
  • 1970-01-01
  • 2020-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-28
  • 2021-11-08
相关资源
最近更新 更多