У меня есть веб-страница ASP.NET MVC, где я использую DataAnnotation для проверки форм на стороне клиента. Один из классов представления имеют свойство, которое выглядит следующим образом:DataAnnotaion не удается (заморозить) на клиенте?
[StringLength(100, MinimumLength = 3, ErrorMessage = "Länken måste vara mellan 3 och 100 tecken lång")]
[Display(Name = "Länk")]
[RegularExpression(@"^(http(s)?://([\w-]+.)+[\w-]+(/[\w- ./?%&=])?)?$", ErrorMessage="Länkgen är inte giltlig")]
public string Url { get; set; }
В представлении я использую этот код для СВОЙСТВ:
@Html.LabelFor(c => c.Url, true)
@Html.TextBoxFor(c => c.Url, new { @class = "tb1", @Style = "width:400px;" })
@Html.ValidationMessageFor(model => model.Url)
При вставке в URL, как это:
http://95rockfm.com/best-voicemail-giving-play-by-play-of-car-accident/
Веб-страница будет зависнуть, и я не могу сделать что-нибудь на wepage. Если я однако вставить это:
http://95rockfm.com/best-voicemail-giving-play-by-play-of-car-accident
Он работает просто отлично.
Эти файла JavaScript включен в нижней части страницы:
<script type="text/javascript" src="/Scripts/jquery.qtip.min.js"></script>
<script src="/Scripts/jquery-1.7.1.min.js"></script>
<script src="/Scripts/jquery-ui-1.8.20.min.js"></script>
<script src="/Scripts/jquery.validate.min.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js"></script>
Точно такая же проблема accures как в IE и Chrome. Однако IE вернется и скажет, что сценарий занял много времени и кнопка, чтобы остановить скрипт. Но при переключении управления вводом сценарий снова запускается и просматривает веб-страницу.
Я не использую какие-либо пользовательские материалы, так почему я могу это получить?
Этот феномен называется [Катастрофическое обратное слежение] (http://www.regular-expressions.info/catastrophic.html). Я не могу исправить ваше регулярное выражение (я не очень хорошо с ними), чтобы избежать этой ошибки, но есть много похожих вопросов на SO: http://stackoverflow.com/questions/14723667/javascript-hang-when-matching-regular -expression-using-ie-chrome http://stackoverflow.com/questions/17116675/why-does-this-regex-make-chrome-hang http://stackoverflow.com/questions/2407870/javascript-regex-hangs -using-v8 Другая статья: http://davetayls.me/blog/2012/10/11/its-a-regexp-catastrophe/ – nemesv