このようなモデルがあります。
public class QuickQuote
{
[Required]
public Enumerations.AUSTRALIA_STATES state { get; set; }
[Required]
public Enumerations.FAMILY_TYPE familyType { get; set; }
ご覧のとおり、2 つのプロパティは列挙型です。
ここで、私は自分のモデル バインダーを使用したいと考えています。
ので、私は持っています;
public class QuickQuoteBinder : DefaultModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
quickQuote = new QuickQuote();
try
{
quickQuote.state = (Enumerations.AUSTRALIA_STATES)
Enum.Parse(typeof(Enumerations.AUSTRALIA_STATES),
bindingContext.ValueProvider.GetValue(bindingContext.ModelName + ".state").AttemptedValue);
}
catch {
ModelState modelState = new ModelState();
ModelError err = new ModelError("Required");
modelState.Errors.Add(err);
bindingContext.ModelState.Add(bindingContext.ModelName + ".state", modelState);
}
問題は、プロパティごとにヒープがあり、try catch ブロック全体を実行する必要があることです。
私ができると思ったのは、ブロック全体を実行する拡張メソッドを作成することであり、渡す必要があるのはモデル プロパティと列挙だけです。
だから私は次のようなことができます。
quickQuote.state = bindingContext.ValueProvider.GetModelValue("state", ...)
等
これは可能ですか?