2015-02-28 2 views
0

В одном классе модели у меня есть член DateTime TimeExpired. Как автоматически вызывать метод действия по истечении времени? Когда время истекает, мне нужно сделать некоторые вычисления и сохранить их в базе данных. e.q. этот период может быть днем, месяцем и т. д.Вызов метода действия по истечении времени

+0

Вы хотите позвонить в javascript-код, когда истекает срок действия класса .net? – jcubic

+0

Вы можете выполнять задания таймера из класса модели. Модели предназначены для передачи данных из метода Action в представление. Они существуют только в течение короткого времени, пока страница отображается в HTML, а не все время, которое пользователь находится на странице. –

+0

«Просьба уточнить вашу конкретную проблему или добавить дополнительные сведения, чтобы точно указать, что вам нужно. Как это написано в настоящее время, трудно точно сказать, что вы просите». – naveen

ответ

1
DateTime TimeExpired 

не является хорошим способом работы с JavaScript.

1) Я надеюсь, что эта дата была установлена ​​с МСВ, как:

model.TimeExpired = DateTime.UtcNow.AddMinutes(10); 

В противном случае вы будете иметь проблемы в стороне клиента. Я настоятельно рекомендую, чтобы избавиться от этого кода и переписать его

DateTimeOffset TimeExpiredUtc 

2) Если у вас есть UTC DateTime на клиенте, вы можете использовать moment.js библиотеку для разбора и времени установить тайм-аут:

// get number of milliseconds elapsed since 1 January 1970 00:00:00 UTC 
var now = moment().utc().valueOf(); 
// parse string object and get number of milliseconds 
var when = moment(TimeExpiredUtc).valueOf(); 

// calculate the difference 
var timeout = when - now; 
setTimeout(function() { 
    // place your ajax code to call asp.net mvc action here 
}, timeout); 

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

3) Имейте в виду, что этот метод не будет вызываться, если клиент закроет вкладку. Надеюсь, для тебя все в порядке. Потому что, если это не так, вам нужен совершенно другой подход.

+0

Это хороший совет, но поскольку я долго ждал ответа, я нашел решение для своей проблемы без использования javascript. – bambi

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