Как я могу контролировать значение попытки для привязки пользовательской модели? - PullRequest
0 голосов
/ 21 февраля 2012

У меня есть действие с такой подписью:

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();
   }
}

По сути, я привязываю необработанное значение кenum, довольно просто.Работает нормально.

Но обратите внимание, что для того, чтобы получить доступ к запрашиваемому значению, мне нужно использовать волшебную строку ("myEnum").

Есть ли способ, которым я могу предоставить этов связыватель модели, поэтому удалите волшебную строку?

Поскольку, если я хочу использовать связыватель модели в других местах, я должен убедиться, что я вызываю параметр "myEnum", иначе это вызовет время выполненияошибка.

Я пытался добавить ctor в связыватель модели, но нигде не могу его создать.

Есть идеи?

1 Ответ

1 голос
/ 21 февраля 2012

Есть ли способ, которым я могу подать это в связыватель модели, поэтому удалите волшебную строку?

Sure:

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