相关疑难解决方法(0)

在Asp.Net Core上为MongoDB ObjectId创建ModelBinder

我正在尝试为我的模型中的ObjectId类型创建一个非常简单的模型绑定程序,但到目前为止似乎还无法使它工作。

这是模型联编程序:

public class ObjectIdModelBinder : IModelBinder
{
    public Task BindModelAsync(ModelBindingContext bindingContext)
    {
        var result = bindingContext.ValueProvider.GetValue(bindingContext.FieldName);
        return Task.FromResult(new ObjectId(result.FirstValue));
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我编写的ModelBinderProvider:

public class ObjectIdModelBinderProvider : IModelBinderProvider
{
    public IModelBinder GetBinder(ModelBinderProviderContext context)
    {
        if (context == null) throw new ArgumentNullException(nameof(context));

        if (context.Metadata.ModelType == typeof(ObjectId))
        {
            return new BinderTypeModelBinder(typeof(ObjectIdModelBinder));
        }

        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我尝试将body参数绑定到的类:

public class Player
{
    [BsonId]
    [ModelBinder(BinderType = typeof(ObjectIdModelBinder))]
    public ObjectId Id { get; set; }
    public Guid PlatformId { get; set; }
    public string Name …
Run Code Online (Sandbox Code Playgroud)

c# model-binding mongodb asp.net-core-mvc asp.net-core

5
推荐指数
1
解决办法
661
查看次数