Так как TimeSpan
не имеет значения по умолчанию ctro (без параметров), то такое связующее устройство по умолчанию не может использоваться. Вы должны написать свой собственный:
public class TimeModelBinder:DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext,
ModelBindingContext bindingContext)
{
var hour = controllerContext.HttpContext.Request["hours"];
var minutes = controllerContext.HttpContext.Request["minutes"];
var time = new TimeSpan(int.Parse(Hour), int.Parse(minutes), 0);
return return time;
}
}
Контроллер:
public ActionResult Index([ModelBinder(typeof(TimeModelBinder))] TimeSpan model)
{
}
Сообщение:
$.post("/home/index", {
hours: 5,
minutes: 10 }, function() {
//success
});
Письменное из памяти
'TimeSpan' хранит интервал времени, не конкретное время. Единственный способ использовать временной интервал для представления времени - хранить интервал с определенного времени, например, в полночь. Это то, что вы хотите? –
@pwas Да, я хочу сохранить время с полуночи. –
Итак, вам нужно написать собственное связующее устройство, потому что 'TimeSpan' не имеет по умолчанию безрейтинговый ctor, поэтому по умолчанию он не может быть привязан. –