如何控制自定义模型绑定器的尝试值

本文关键字:绑定 模型 自定义 何控制 控制 | 更新日期: 2023-09-27 18:25:11

我有一个签名如下的操作:

public ActionResult Index([ModelBinder(typeof(MyEnumModelBinder))] MyEnum myEnum)

实现方式如下:

public class MyEnumModelBinder: IModelBinder
{
   public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
   {
      var valueProviderResult = bindingContext.ValueProvider.GetValue("myEnum");
      return valueProviderResult == null ? 
         MyEnum.Default : 
         valueProviderResult.AttemptedValue.ToMyEnum();
   }
}

基本上,我将一个原始值绑定到一个枚举,非常简单。工作良好。

但是,请注意,为了访问尝试的值,我需要使用一个魔术字符串("myEnum")。

有什么办法我可以把这个提供给模型活页夹,所以去掉魔术串吗?

因为如果我想在其他地方使用这个模型绑定器,那么我必须确保我调用了参数"myEnum",否则会导致运行时错误。

我试着在模型绑定器中添加一个ctor,但没有任何地方可以实例化它

有什么想法吗?

如何控制自定义模型绑定器的尝试值

有什么办法我可以把这个提供给模型活页夹,所以去掉魔术串吗?

当然:

var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);