内模的定制模型粘合剂

时间:2012-01-24 20:26:39

标签: asp.net-mvc-3 asp.net-mvc-2 custom-model-binder custom-binding

我有一个这样的模型:

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

0 个答案:

没有答案