如何控制自定义模型绑定器的尝试值?
我有一个带有如下签名的操作:
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,但没有地方可以实际实例化它。
有什么想法吗?
I've got an action with a signature like this:
public ActionResult Index([ModelBinder(typeof(MyEnumModelBinder))] MyEnum myEnum)
Which is implemented like this:
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();
}
}
Basically, i'm binding a raw value to an enum, pretty simple. Works fine.
But, notice how in order to get access to the attempted value, i need to use a magic string ("myEnum").
Is there any way i can supply this to the model binder, so remove the magic string?
Because if i want to use this model binder in other places, then i have to make sure i call the parameter "myEnum", otherwise it will cause a runtime error.
I tried adding a ctor to the model binder, but there's nowhere where i actually instantiate it.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当然:
Sure: