【发布时间】:2015-11-11 00:22:09
【问题描述】:
我正在使用请求和响应模型来封装需要传递给我的 ASP.NET Web Api 中的方法的数据,必要时使用 [FromUri] 和 [FromBody]。
但是,在某些情况下,我想同时使用 Uri 和 Body 来填充我的请求模型的属性。一个例子是更新用户,UserId 应该在 Uri 中传递,但要更新的数据将在正文内容中传递。我想要的实现看起来像这样:
型号:
public class UpdateUserRequestModel
{
public string UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string DisplayName { get; set; }
}
API 方法:
[HttpPut]
[Route("Update/{UserId}")]
// PUT: api/Users/Update/user@domain.net
public async Task UpdateUserAsync(UpdateUserRequestModel model)
{
// Method logic
}
我希望获得UserId 的属性[FromUri],但要获得其余的[FromBody],同时将所有参数都保存在一个对象中。这可能吗?
【问题讨论】:
-
我不知道这是否可能,但如果不是,您可以随时编写自己的自定义序列化程序。
-
A
HTTPPUT允许这样做。但是您需要同时传递uri参数和body。 -
@AmitKumarGhosh 我将如何设计我的语法来支持它?请记住,我正在尝试填充来自不同来源的单个输入参数的属性。
-
在您的操作中接受两个参数,通过
uri传递id属性,并通过body传递整个对象。 -
@AmitKumarGhosh 我目前在我的代码中使用这种方法。我想要做的是保持该级别的功能,但转移
id属性并将其放入model参数中,
标签: c# asp.net asp.net-web-api dto asp.net-web-api-routing