Добавление случая, когда имя класса для объекта, используемого в структуре сущности, такое же, как имя класса для файла с кодировкой веб-формы.
Предположим, у вас есть веб-форма Contact.aspx, чей класс codebehind Свяжитесь с вами, и у вас есть имя объекта Contact.
Затем следующий код вызовет исключение NullReferenceException при вызове context.SaveChanges ()
Contact contact = new Contact { Name = "Abhinav"};
var context = new DataContext();
context.Contacts.Add(contact);
context.SaveChanges(); // NullReferenceException at this line
Ради полноты класса DataContext
public class DataContext : DbContext
{
public DbSet Contacts {get; set;}
}
и класс сущности контакта. Иногда классы сущностей являются частичными классами, так что вы можете распространять их и в других файлах.
public partial class Contact
{
public string Name {get; set;}
}
Ошибка возникает, когда оба класса entity и codebehind находятся в одном и том же пространстве имен. Чтобы исправить это, переименуйте класс сущности или класс codebehind для Contact.aspx.
Причина. Я все еще не уверен в причине. Но всякий раз, когда какой-либо из классов сущностей расширяет System.Web.UI.Page, возникает эта ошибка.
Для обсуждения рассмотрим NullReferenceException в DbContext.saveChanges ()
У вашего исходного регулярного выражения есть недостатки: он не будет соответствовать 04:00
, например.
Это может работать лучше:
^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
Ниже регулярное выражение поможет проверить формат hh: mm
^([0-1][0-9]|2[0-3]):[0-5][0-9]$
Вы можете использовать следующее регулярное выражение:
^[0-1][0-9]:[0-5][0-9]$|^[2][0-3]:[0-5][0-9]$|^[2][3]:[0][0]$
Declare
private static final String TIME24HOURS_PATTERN = "([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]";
public boolean validate(final String time) {
pattern = Pattern.compile(TIME24HOURS_PATTERN);
matcher = pattern.matcher(time);
return matcher.matches();
}
Этот метод возвращает «true», когда String соответствует регулярному выражению.
Поскольку вы запросили левый самый бит опционально, я делал левый самый и самый правый бит необязательно, проверьте его
^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]?$
Он совпадает с
0:0
00:00
00:0
0:00
23:59
01:00
00:59
Прямая ссылка доступна здесь
Вы можете использовать это регулярное выражение:
^(2[0-3]|[01]?[0-9]):([1-5]{1}[0-9])$
Если вы хотите исключить 00:00, вы можете использовать это выражение
^(2[0-3]|[01]?[0-9]):(0[1-9]{1}|[1-5]{1}[0-9])$
. Второе выражение - лучший вариант, потому что действительное время с 00:01 до 00:59 или с 0:01 до 23:59. Вы можете использовать любой из них по своему требованию. Ссылка Regex101
Попробуйте следующее
^([0-2][0-3]:[0-5][0-9])|(0?[0-9]:[0-5][0-9])$
Примечание. Я принимал механизм регулярных выражений javascript. Если это не так, пожалуйста, дайте мне знать.
Небольшая модификация вклада Manish M Demblani's выше обрабатывает 4 утра (я избавился от секции секунд, поскольку мне это не нужно в моем приложении)
^(([0-1]{0,1}[0-9]( )?(AM|am|aM|Am|PM|pm|pM|Pm))|(([0]?[1-9]|1[0-2])(:|\.)[0-5][0-9]( )?(AM|am|aM|Am|PM|pm|pM|Pm))|(([0]?[0-9]|1[0-9]|2[0-3])(:|\.)[0-5][0-9]))$
ручки: 4 часа 4 часа ночи 4:00 4:00 утра 4:00 вечера 4.30 утра и т. д.
Вы можете попробовать следующее
^\d{1,2}([:.]?\d{1,2})?([ ]?[a|p]m)?$
. Он может обнаруживать следующие шаблоны:
2300
23:00
4 am
4am
4pm
4 pm
04:30pm
04:30 pm
4:30pm
4:30 pm
04.30pm
04.30 pm
4.30pm
4.30 pm
23:59
0000
00:00
Вы можете использовать этот 24H, секунды являются необязательными
^([0-1]?[0-9]|[2][0-3]):([0-5][0-9])(:[0-5][0-9])?$
/^(0?[1-9]|1[0-2]):[0-5][0-9]$/
/((1[0-2]|0?[1-9]):([0-5][0-9]) ?([AaPp][Mm]))/
/^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/
/^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/
/(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)/
Матчи:
2:9 2:09 2:59 02:9 02:09 02:59 23:59
Использовать его:
blockquote>^([0-9]|0[0-9]|1[0-9]|2[0-3]):([0-9]|[0-5][0-9])$
проверить этот детектор метки времени masterfull regex, который я построил, чтобы найти временную метку, заданную пользователем, примеры того, что она будет включать, но, безусловно, НЕ ограничивается:
8:30-9:40
09:40-09 : 50
09 : 40-09 : 50
09:40 - 09 : 50
08:00to05:00
08 : 00to05 : 00
08:00 to 05:00
8am-09pm
08h00 till 17h00
8pm-5am
08h00,21h00
06pm untill 9am
Он также будет записывать еще много, если в это время есть цифры
Ничто из этого не помогло мне. В конце я использовал:
^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$ (js engine)
Логика:
Первое число (часы): либо число от 0 до 19 -> [0-1]?[0-9]
(разрешение одной цифры число) или число от 20 до 23 -> 2[0-3]
, второе число (минуты) всегда является числом от 00 до 59 -> [0-5][0-9]
(не допуская ни одной цифры)
Вы можете использовать следующее регулярное выражение:
^[0-2]?[0-3]:[0-5][0-9]$
Только сделанная модификация - крайняя левая цифра является необязательной. Остальное регулярное выражение такое же.
Лучше всего было бы для ЧЧ: ММ без риска.
^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
Mine is:
^(1?[0-9]|2[0-3]):[0-5][0-9]$
Это намного короче
. Попробовал его с несколькими примерами
Match:
И не соответствует любому недопустимому экземпляру, например 25:76 и т. Д. ...
Удивительно, но я обнаружил, что все они не совсем покрывают его, поскольку они не работают для более короткого формата в полночь 0: 0, а некоторые не работают в 00:00, я использовал и протестировал следующие :
^([0-9]|0[0-9]|1?[0-9]|2[0-3]):[0-5]?[0-9]$