我有一个带有这样签名的动作:
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,但实际上我没有在任何地方实例化它。
有任何想法吗?