繁体   English   中英

为 Razor 页面使用非默认构造函数

[英]Use non-default constructor for 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 时出现错误,因为查询中没有无参数的构造函数:

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();
    }
}

是否可以使用私有 setter 进行模型绑定(无需为每个查询编写自定义 IModelBinder )?

是否可以使用私有 setter 进行模型绑定(无需为每个查询编写自定义 IModelBinder

强调我的

简短回答:否

ASP.NET Core 中的模型绑定:复杂类型

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

再次强调我的

我相信您是如何通过尝试使用不可变消息请求作为绑定模型来混合关注的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM