使用FromBody将变量发送到web API方法-C#

使用FromBody将变量发送到web API方法-C#,c#,asp.net-web-api,C#,Asp.net Web Api,我正在创建一个WebApi方法来调用存储库中的方法。Repository方法调用存储过程并发送4个输入,输出为字符串。我在WebAPI中遇到了一个问题,即如何将输入变量发送给它以及URI是什么样子 这是存储库方法: 公共异步任务AddUserAsync(AddUser用户) { return wait this.Context.AddUserAsync(user); } 这是Web API方法:我必须使用[FromBody]如何使用它如何将输入变量发送到此方法?我可以和邮递员一起测试吗 [Ht

我正在创建一个WebApi方法来调用存储库中的方法。Repository方法调用存储过程并发送4个输入,输出为字符串。我在WebAPI中遇到了一个问题,即如何将输入变量发送给它以及URI是什么样子

这是存储库方法:

公共异步任务AddUserAsync(AddUser用户) { return wait this.Context.AddUserAsync(user); }

这是Web API方法:我必须使用
[FromBody]
如何使用它如何将输入变量发送到此方法?我可以和邮递员一起测试吗

[HttpPost]
[Route("AddUser/{user}")]
public async Task<string> AddUser([FromBody]AddUser user)
{
    return  Exception = await Repository.AddUserAsync(user);
}
我想知道用户对象如何从API到存储库?还有,如果我尝试了此操作,但调试时用户为空,那么URI是什么:

http://localhost:59509/Adduser/user?UserEmailAddress=test@yahoo.com&PasswordHash=abc&Salt=123&RemoteRefNumber=foo

如果发布,数据应该是请求主体的一部分,并带有键值对。基于您的URL,您似乎在使用GET

[HttpPost, Route(Name = "create:account"), Authorize(Roles = Account.Editor)]
public async Task<IHttpActionResult> Create(Account acc)


$.ajax(
    url: "",
    type: "post",
    dataType:"json",
    data: { 
        userEmailAddress  : "test@test.com"
    }
)
[HttpPost,Route(Name=“create:account”),Authorize(Roles=account.Editor)]
公共异步任务创建(帐户acc)
$.ajax(
url:“”,
类型:“post”,
数据类型:“json”,
数据:{
用户电子邮件地址:“test@test.com"
}
)

如果发布,则数据应该是带有键值对的请求正文的一部分。基于您的URL,您似乎在使用GET

[HttpPost, Route(Name = "create:account"), Authorize(Roles = Account.Editor)]
public async Task<IHttpActionResult> Create(Account acc)


$.ajax(
    url: "",
    type: "post",
    dataType:"json",
    data: { 
        userEmailAddress  : "test@test.com"
    }
)
[HttpPost,Route(Name=“create:account”),Authorize(Roles=account.Editor)]
公共异步任务创建(帐户acc)
$.ajax(
url:“”,
类型:“post”,
数据类型:“json”,
数据:{
用户电子邮件地址:“test@test.com"
}
)

您已将其设置为GET请求,因此参数通常作为URL查询字符串参数注入

职位的工作方式不同。您提交一个包含输入和值集合的表单,该表单将自动发送到请求正文中

试试这个:

[HttpPost]
[Route("AddUser")]
public async Task<string> AddUser(AddUser user)
{
    return  Exception = await Repository.AddUserAsync(user);
}
[HttpPost]
[路由(“添加用户”)]
公共异步任务AddUser(AddUser user)
{
returnexception=await Repository.AddUserAsync(用户);
}
在客户端,您只需要将表单操作设置为控制器操作URL并使用Post类型


此外,最好将窗体/视图基于ViewModel,并根据控制器操作接受它。然后将其映射/转换为数据模型实体。

您已将其设置为GET请求,因此参数通常作为URL查询字符串参数注入

职位的工作方式不同。您提交一个包含输入和值集合的表单,该表单将自动发送到请求正文中

试试这个:

[HttpPost]
[Route("AddUser")]
public async Task<string> AddUser(AddUser user)
{
    return  Exception = await Repository.AddUserAsync(user);
}
[HttpPost]
[路由(“添加用户”)]
公共异步任务AddUser(AddUser user)
{
returnexception=await Repository.AddUserAsync(用户);
}
在客户端,您只需要将表单操作设置为控制器操作URL并使用Post类型


此外,最好将窗体/视图基于ViewModel,并根据控制器操作接受它。然后将其映射/转换为数据模型实体。

您用于请求服务器的客户端类型是什么?您用于请求服务器的客户端类型是什么?我现在正在使用post it,但当我发布时,用户为空。您可以使用监视HTTP消息并查看发布的内容吗。使用fiddler或firebug监视网络流量。在webapi中,复杂对象从身体中提取。所以不需要使用FromBody。如果GET操作需要一个复杂的对象,则需要FromUri属性。我如何使用[FromBody]而不是URI中的[FromBody]发送它。WebApi将为您解决这一问题。这是它的参数绑定算法的一部分。我现在正在使用post,但是当我发布时,用户是空的。您可以使用监控HTTP消息并查看发布的内容吗。使用fiddler或firebug监视网络流量。在webapi中,复杂对象从身体中提取。所以不需要使用FromBody。如果GET操作需要一个复杂的对象,则需要FromUri属性。我如何使用[FromBody]而不是URI中的[FromBody]发送它。WebApi将为您解决这一问题。这是它的参数绑定算法的一部分。