Estoy creando un cuaderno de modelo personalizado en una aplicación de Mvc y quiero analizar una cadena a un valor de enumeración y asignarla a la propiedad del modelo. Lo tengo trabajando sobreescribiendo el método BindProperty
, pero también noté que hay un método SetProperty
.Cuál es la diferencia entre BindProperty y SetProperty en IModelBinder
protected override void BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, System.ComponentModel.PropertyDescriptor propertyDescriptor)
{
switch (propertyDescriptor.Name)
{
case "EnumProperty":
BindEnumProperty(controllerContext, bindingContext);
break;
}
base.BindProperty(controllerContext, bindingContext, propertyDescriptor);
}
private static void BindEnumProperty(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var formValue = controllerContext.HttpContext.Request.Form["formValue"];
if (String.IsNullOrEmpty(formValue))
{
throw new ArgumentException();
}
var model = (MyModel)bindingContext.Model;
model.EnumProperty = (EnumType)Enum.Parse(typeof(EnumType), formValue);
}
no estoy seguro de cuál es la diferencia entre los dos y si estoy haciendo esto en la forma recomendada.
La fuente está ahora en http://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.Mvc/DefaultModelBinder.cs – Rob
@Rob Su URL no es válida también –
@Kilanny, ¿cómo es? Todavía parece funcionar para mí. – Rob