質問

私はこのような署名で行動を持っています:

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を追加しようとしましたが、実際にインスタンス化する場所はありません。

何か案は?

役に立ちましたか?

解決

これをモデルバインダーに供給できるようにする方法はありますか?マジックストリングを削除しますか?

もちろん:

var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top