カスタムモデルバインダーの試行値を制御するにはどうすればよいですか?
-
28-10-2019 - |
質問
私はこのような署名で行動を持っています:
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);
所属していません StackOverflow