2015-04-23 3 views
1

У меня есть значение как 3:30pm как строка javascript.Преобразование Время дня в формате строки до C# timespan

У меня есть контроллер MVC, который принимает параметр, который является TimeSpan.

Я делаю сообщение jquery для контроллера. Как получить время из строкового формата в формат TimeSpan?

+0

'TimeSpan' хранит интервал времени, не конкретное время. Единственный способ использовать временной интервал для представления времени - хранить интервал с определенного времени, например, в полночь. Это то, что вы хотите? –

+0

@pwas Да, я хочу сохранить время с полуночи. –

+0

Итак, вам нужно написать собственное связующее устройство, потому что 'TimeSpan' не имеет по умолчанию безрейтинговый ctor, поэтому по умолчанию он не может быть привязан. –

ответ

1

Так как 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 
     }); 

Письменное из памяти

1

Если вам удастся разобрать ваш яваскрипт строки DATETIME вы можете сделать:

DateTime.TimeOfDay 

после которых будет представлять собой часть дня, прошедшее с полуночи, как TimeSpan.

Смежные вопросы