gpt4 book ai didi

c# - Asp .Net Core 的 Ibody ModelValidator 替代方案?

转载 作者:行者123 更新时间:2023-12-03 21:04:30 24 4
gpt4 key购买 nike

我使用 Devexpress XPO 作为 ORM,我将使用 ASP.NET 核心创建一个 OData Web API。 Devexpress 创建了一个 example在 ASP.NET 经典中,我有一个代码行(在 CS/ODataService/Globals.asax.cs,第 13 行)我无法“转换”,因为在 ASP.NET 核心中似乎没有对应项:

GlobalConfiguration.Configuration.Services.Replace(typeof(IBodyModelValidator), new CustomBodyModelValidator());

首先,我对 ...Services.Replace 感到困惑,因为我没有在核心中找到合适的“命令”,并且(最重要的)核心中似乎没有 IBodyModelValidator 的对应物。我如何将其“转换”为 ASP.NET 核心?

任何建议,将不胜感激!

最佳答案

我知道这是旧的,但这是我在寻找答案时遇到的第一篇文章。这是我解决问题的方法:

public class CustomBodyModelValidator : ObjectModelValidator
{
public CustomBodyModelValidator(IModelMetadataProvider modelMetadataProvider, IList<IModelValidatorProvider> validatorProviders)
: base(modelMetadataProvider, validatorProviders) { }

public override ValidationVisitor GetValidationVisitor(ActionContext actionContext, IModelValidatorProvider validatorProvider,
ValidatorCache validatorCache, IModelMetadataProvider metadataProvider, ValidationStateDictionary validationState)
{
return new(actionContext, validatorProvider, validatorCache, metadataProvider, validationState)
{
ValidateComplexTypesIfChildValidationFails = true
};
}

public override void Validate(ActionContext actionContext, ValidationStateDictionary validationState, string prefix, object model,
ModelMetadata metadata, object container)
{
//TODO: put your logic here

base.Validate(actionContext, validationState, prefix, model, metadata, container);
}
}
然后在 Startup.cs注册:
services.AddSingleton<IObjectModelValidator>(provider =>
{
var metadataProvider = provider.GetRequiredService<IModelMetadataProvider>();
var options = provider.GetRequiredService<IOptions<MvcOptions>>().Value;
return new CustomBodyModelValidator(metadataProvider, options.ModelValidatorProviders);
});

关于c# - Asp .Net Core 的 Ibody ModelValidator 替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55278559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com