¿Cómo puedo controlar el valor intento de una carpeta de modelo personalizada?
-
28-10-2019 - |
Pregunta
Tengo una acción con una firma como esta:
public ActionResult Index([ModelBinder(typeof(MyEnumModelBinder))] MyEnum myEnum)
Que se implementa así:
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();
}
}
Básicamente, estoy vinculando un valor bruto a un enum, bastante simple. Funciona bien.
Pero, observe cómo para obtener acceso al valor intento, necesito usar una cadena mágica ("Myenum").
¿Hay alguna forma de suministrar esto a la carpeta del modelo, así que elimina la cadena mágica?
Porque si quiero usar esta carpeta modelo en otros lugares, tengo que asegurarme de llamar al parámetro "Myenum", de lo contrario causará un error de tiempo de ejecución.
Intenté agregar un CTOR a la carpeta modelo, pero no hay ningún lugar donde realmente lo instanciaré.
¿Algunas ideas?
Solución
¿Hay alguna forma de suministrar esto a la carpeta del modelo, así que elimina la cadena mágica?
Por supuesto:
var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);