【问题标题】:How to set two default fields to my input-model on ASP .Net webAPi .Net Core?如何在 ASP .Net webAPi .Net Core 上为我的输入模型设置两个默认字段?
【发布时间】:2019-03-27 11:20:13
【问题描述】:

我有一个我称之为 InputModelBase 的基类,这个想法是所有 REST post API 都应将此基类用于输入模型。

我有两个默认属性:UserId 和 TestParams

我想要做的是一个中间件或检查我的参数是否为 InputModelBase 类型的东西,如果是,我想将 Iprinciple 声明 Userid 绑定到 userid 属性,如果在标头中定义了一些值,还需要 TestParam。

我尝试构建自己的绑定提供程序,但迷路了。 我不想拥有绑定事物的标准方式。所以我只想使用我已经绑定的模型并为其添加两个值。

我希望在中间件中使用它,这样开发人员就不需要在我们所有的 REST API 中手动添加它们。

当他们使用 inputmodel 时,userID 应该在那里,如果由 header 发送,则还有 testparams。

所以我需要在绑定完成时挂接,就在它把我传递给它自己的控制器方法之前

【问题讨论】:

  • 您希望在调用 API 时为您的 UserIdTestParams 设置 DefaultValues 吗?
  • 是的。当用户发布数据让说 /api/v1/user 并且我有一个 FromBody UserIntPutModel 时,我希望它按默认方式绑定。但是我想在我的所有输入模型上添加使用两个默认字段,这些字段将 userid 和 testparam 添加到这个 inputmodel。而不是一直要求我申请用户 ID。
  • 不,它没有...

标签: c# asp.net-mvc


【解决方案1】:

我使用过滤器操作的中间件实现了它。我尝试了错误的文件管理器选项。我的错。

public class DefaultCommandSettingsActionFilter : IAsyncActionFilter
        {
            public async Task OnActionExecutionAsync(
                ActionExecutingContext context,
                ActionExecutionDelegate next)
            {
                var command = context.ActionArguments.Values.FirstOrDefault(x => x is ICommand);
                if(command != null)
                    ((dynamic)command).TestHarness = "Set values here!";

                await next();
            }
        }

【讨论】:

    猜你喜欢
    • 2018-10-03
    • 2019-10-21
    • 2010-12-11
    • 1970-01-01
    • 2021-07-20
    • 2019-12-29
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多