私はこのようなモデルを得ました:
public class MainModel
{
public string Id {get;set;}
public string Title {get;set;}
public TimePicker TimePickerField {get;set;}
}
TimePicker
次のような内部モデルです。
public class TimePicker
{
public TimeSpan {get;set;}
public AmPmEnum AmPm {get;set;}
}
内部モデルのカスタム モデル バインディングを作成しようとしています。TimePicker
TimePicker
問題は、フォームでモデル フィールドに送信されたカスタム モデル バインダーの値を取得するにはどうすればよいかということです。
このように取得しようとすると:
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
私は入るだけnull
ですvalue
。
モデル バインダーを正しく実装する方法がわかりません。
public class TimePickerModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if (bindingContext == null)
{
throw new ArgumentNullException("bindingContext");
}
var result = new TimePicker();
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (value != null)
{
bindingContext.ModelState.SetModelValue(bindingContext.ModelName, value);
try
{
//result = Duration.Parse(value.AttemptedValue);
}
catch (Exception ex)
{
bindingContext.ModelState.AddModelError(bindingContext.ModelName, ex.Message);
}
}
return result;
}
}