我有一个使用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] 删除。
我来说两句