次のように、webApi2 プロジェクトと他のプロジェクトがあり、そこにはモデル クラスとすべてのモデルのベースである BaseModel があります。
public class BaseModel
{
public string UserId { get; set; }
}
他のすべてのモデルは、私の BaseModel から派生しています。
webapi には、次のように CustomerController があります。
public class CustomerController : ApiController
{
[HttpPost]
public GetCustomerResponseModel Get(GetCustomerRequestModel requestModel)
{
var response = new GetCustomerResponseModel();
//I need only the UserId coming from the BaseModel is binded from request headers
var userId = requestModel.UserId;
//I want all model data except UserId is binded with default model binding
var customerData = requestModel.CustomerData;
var someOtherData = requestModel.SomeOtherData;
return response;
}
[HttpPost]
public AddStockAlertResponseModel AddStockAlert(AddStockAlertRequestModel requestModel)
{
var response = new AddStockAlertResponseModel();
//I need only the UserId coming from the BaseModel is binded from request headers
var userId = requestModel.UserId;
//I want all model data except UserId is binded with default model binding
var stockInfo = requestModel.StockInfo;
return response;
}
}
CustomerController に送信されるすべてのリクエストには、リクエスト ヘッダーに「UserId」ヘッダーがあり、ModelBinder または ParameterBinder、または他のモデル パラメータに触れずにリクエスト ヘッダーから UserId のみをバインドする機能が必要です。UserId 以外のモデル パラメータはデフォルトでバインドされることを意味します。
AOP、インターセプター、またはアスペクトを使用したくありません。モデル バインダー、パラメーター バインダーなどの asp.net 機能で UserId のみをバインドすることは可能ですか?