如果在 ASP.NET Core 中自定义的 DateTime ModelBinder 在 Controller 中没有被调用,可能是因为其未被添加到全局配置中。以下是一个示例,展示如何将其添加到全局配置中:
public class CustomDateTimeModelBinder : IModelBinder { private readonly IModelBinder _fallbackBinder = new SimpleTypeModelBinder(typeof(DateTime));
public Task BindModelAsync(ModelBindingContext bindingContext)
{
if (bindingContext.ModelType != typeof(DateTime))
{
return _fallbackBinder.BindModelAsync(bindingContext);
}
// 自定义的绑定逻辑放在这里
return Task.CompletedTask;
}
}
public void ConfigureServices(IServiceCollection services) { // 添加 MVC 服务并配置选项 services.AddControllers(options => { options.ModelBinderProviders.Insert(0, new CustomDateTimeModelBinderProvider()); }); }
public class CustomDateTimeModelBinderProvider : IModelBinderProvider { public IModelBinder GetBinder(ModelBinderProviderContext context) { if (context.Metadata.ModelType == typeof(DateTime)) { return new CustomDateTimeModelBinder(); }
return null;
}
}
通过以上步骤,在 Controller 中对 DateTime 类型的参数进行绑定时,就可以调用到自定义的 DateTime ModelBinder。
上一篇:Asp.netCoreController中的自定义ModelBinding问题
下一篇:Asp.NETCoreCookieAuthenticationIdentifier(Asp.NETCoreCookie身份验证标识符)