对Razor Pages使用非默认构造函数

阿克

我有一个使用Razor Pages和Mediatr的asp.net core 2.2 Web应用程序。

我的查询具有私人设置员,Jimmy Bogard的博客所述:

public class Query : IRequest<Result>
{
    public Query(string needle)
    {
        this.Needle = needle;
    }

    public string Needle { get; private set; }
}

当我在Web API中使用它时就可以了(即使没有ConstructionHandling

但是当我使用Razor Pages时出现错误,因为查询中没有无参数的ctor:

public class SearchModel : PageBaseModel
{
    public SearchModel(IMediator mediator)
        : base(mediator)
    {
    }

    [BindProperty(SupportsGet = true)]
    public Accounts.Search.Query Query { get; set; }

    public Accounts.Search.Result Result { get; private set; }

    public async Task<IActionResult> OnGetAsync(CancellationToken cancellationToken)
    {
        Result = await this.Mediator.Send(Query, cancellationToken);

        return this.Page();
    }
}

是否可以使用专用设置器进行模型绑定(无需为每个查询编写自定义IModelBinder)?

恩科西

是否可以使用专用设置器进行模型绑定(无需为每个查询编写自定义IModelBinder

重点矿

简短答案:否

长的答案在这里模型ASP.NET核心结合:复杂类型

复杂类型必须具有公共默认构造函数和公共可写属性进行绑定发生模型绑定时,将使用公共默认构造函数实例化该类。

再次强调我的

我相信您通过尝试使用不可变的消息请求作为绑定模型来混合各种顾虑。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章