Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.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# 如何从body[FromBody]发布参数并在<;中检索对象;列表>;在WebAPI中?_C#_Asp.net Web Api - Fatal编程技术网

C# 如何从body[FromBody]发布参数并在<;中检索对象;列表>;在WebAPI中?

C# 如何从body[FromBody]发布参数并在<;中检索对象;列表>;在WebAPI中?,c#,asp.net-web-api,C#,Asp.net Web Api,如何将参数发布到实体并获取列表中的对象?IO我可以在控制器中使用此post方法检索数据,并将参数附加到URI 会计主任: [HttpPost] [ActionName("mini")] public List<MiniStatement> GetMiniStatement(string accountNumber) { var miniState = BusinessLayer.Api.AccountHolderApi.GetMiniStatement(accountNumb

如何将参数发布到实体并获取列表中的对象?IO我可以在控制器中使用此post方法检索数据,并将参数附加到URI

会计主任:

[HttpPost]
[ActionName("mini")]
public List<MiniStatement> GetMiniStatement(string accountNumber)
{
    var miniState = BusinessLayer.Api.AccountHolderApi.GetMiniStatement(accountNumber);
    return miniState.ToList();
}
getMinistration
数据库层中的方法:

public static List<MiniStatement> GetMiniStatement(string accountNumber)
{
    List<MiniStatement> resultList = new List<MiniStatement>();

    using (var conn = new NpgsqlConnection("Server=localhost;UserId = postgres; " + "Password = pes; Database = pmc;"))
    {
        conn.Open();

        using (var command = new NpgsqlCommand("SELECT * FROM sms.dep_mini_statement(@AccountNumber);", conn))
        {
            command.Parameters.AddWithValue("@AccountNumber", accountNumber);

            using (var dr = command.ExecuteReader())
            {
                while (dr.Read())
                {
                    var result = new MiniStatement
                    {
                        AccountNumber = accountNumber,
                        TranDate = (string)dr[0],
                        Trans = (string)dr[1],
                        Amount = (decimal)dr[2]
                    };
                    resultList.Add(result);
                }
            }
        }
    }

    return resultList;    
}

如果将数据发布为json,则可以在对象中填充AccountNumber,如下所示

{ "AccountNumber": "23" } 
然后在控制器方法中添加[FromBody],如下所示

[HttpPost]
[ActionName("mini")]
public List<MiniStatement> GetMiniStatement([FromBody] MiniStatement state)
{
    var miniState = BusinessLayer.Api.AccountHolderApi.GetMiniStatement(state.AccountNumber);
    return miniState;
}
[HttpPost]
[ActionName(“mini”)]
公共列表GetMinistration([FromBody]Ministration state)
{
var miniState=BusinessLayer.Api.AccountHolderApi.getministtatement(state.AccountNumber);
返回内阁;
}

另外,由于BusinessLayer.Api.AccountHolderApi.getMinisttatement()返回一个列表,您只需按原样传递响应,如果您以json形式发布数据,您可以按如下方式在对象中填充AccountNumber

{ "AccountNumber": "23" } 
然后在控制器方法中添加[FromBody],如下所示

[HttpPost]
[ActionName("mini")]
public List<MiniStatement> GetMiniStatement([FromBody] MiniStatement state)
{
    var miniState = BusinessLayer.Api.AccountHolderApi.GetMiniStatement(state.AccountNumber);
    return miniState;
}
[HttpPost]
[ActionName(“mini”)]
公共列表GetMinistration([FromBody]Ministration state)
{
var miniState=BusinessLayer.Api.AccountHolderApi.getministtatement(state.AccountNumber);
返回内阁;
}

另外,由于BusinessLayer.Api.AccountHolderApi.getMinisttatement()返回一个列表,您可以按原样传递响应,因此基本上可以执行以下操作

在api中创建一个模型类

public class Account
{
 string AccountNumber{get;set;}
}
然后在webapi方法中使用它

[HttpPost]
[ActionName("mini")]
public IActionResult GetMiniStatement([FromBody]Account account)
{
    var miniState = BusinessLayer.Api.AccountHolderApi.GetMiniStatement(account.AccountNumber);
    return new ObjectResult(miniState.ToList());
}
您的请求主体应该如下所示

{
 "AccountNumber":"someNUmber"
}

让我知道这是否有帮助。

因此,基本上您可以执行以下操作

在api中创建一个模型类

public class Account
{
 string AccountNumber{get;set;}
}
然后在webapi方法中使用它

[HttpPost]
[ActionName("mini")]
public IActionResult GetMiniStatement([FromBody]Account account)
{
    var miniState = BusinessLayer.Api.AccountHolderApi.GetMiniStatement(account.AccountNumber);
    return new ObjectResult(miniState.ToList());
}
您的请求主体应该如下所示

{
 "AccountNumber":"someNUmber"
}

让我知道这是否有帮助。

如果要发送正文请求,最简单的方法是在api层中创建一个包含所有所需属性的对象。然后你可以在你的方法中接受它。当您将JSON格式的对象传递给webapi方法时,您将实际获得填充的对象。因此,您可以对该对象执行任何逻辑。如何在sir中获取该对象?如果您希望发送正文请求,最简单的方法是在api层中创建一个包含所有所需属性的对象。然后你可以在你的方法中接受它。当您将JSON格式的对象传递给webapi方法时,您将实际获得填充的对象。因此,您可以对对象执行任何逻辑。我如何在sir中获取对象?您好,先生..我需要将param accountNumber传递给body而不是URI。在传递响应时获取404,就像返回ministate一样。谢谢您,先生。工作很有魅力,学到了一个新东西。再次感谢您。您好,先生..我需要传递paramaccountNumber到主体而不是URI。当通过return ministate传递响应时获得404。谢谢您,先生。工作得很有魅力,学到了一件新东西。再次感谢您。先生,我认为asp.net-core使用IActionResult,而asp.net-web-api2使用IHttpActionResult。我尝试过这个,正如您所说,尝试返回新的ObjectResult(miniState.ToList());现在我遇到了这个错误--无法创建抽象类或接口“ObjectResult”的实例,无法访问受保护的内部构造函数“ObjectResult”here@OLDMONK请参考下面的链接。它将解释web api 2返回类型。感谢详细的解释和链接,先生。感谢您的时间。先生,我认为是asp.net-core使用IActionResult,而asp.net-web-api2使用IHttpActionResult。我确实尝试过这个方法,正如您所说,我尝试返回新的ObjectResult(miniState.ToList());现在我遇到了这个错误--无法创建抽象类或接口“ObjectResult”的实例,无法访问受保护的内部构造函数“ObjectResult”here@OLDMONK请参考下面的链接。它将解释web api 2返回类型。谢谢详细的解释和链接,先生。谢谢您的时间。