Используйте оболочку globbing синтаксис:
grep pattern -r --include=\*.{cpp,h} rootdir
синтаксис для --exclude
идентичен.
Примечание, что звезды оставляют с обратной косой чертой, чтобы препятствовать тому, чтобы он был расширен оболочкой (заключающий его в кавычки, такой как --include="*.{cpp,h}"
, работал бы точно также). Иначе, если бы у Вас были какие-либо файлы в текущем рабочем каталоге, который соответствовал шаблону, командная строка расширилась бы до чего-то как grep pattern -r --include=foo.cpp --include=bar.h rootdir
, который только искал бы файлы, названные foo.cpp
и bar.h
, который довольно вероятен не, что Вы хотели.
Это очень странно. Я проверил страницу документации CheckBox , которая читает
<asp:CheckBox id="CheckBox1"
AutoPostBack="True|False"
Text="Label"
TextAlign="Right|Left"
Checked="True|False"
OnCheckedChanged="OnCheckedChangedMethod"
runat="server"/>
. Как видите, атрибуты OnClick или OnClientClick не определены.
Имея это в виду, я думаю, вот что происходит.
Когда вы это делаете,
<asp:CheckBox runat="server" OnClick="alert(this.checked);" />
ASP.NET не изменяет атрибут OnClick и отображает его как есть в браузере. Это будет выглядеть так:
<input type="checkbox" OnClick="alert(this.checked);" />
Очевидно, браузер понимает «OnClick» и выдает предупреждение.
И в этом сценарии
<asp:CheckBox runat="server" OnClientClick="alert(this.checked);" />
Опять же, ASP.NET не изменит атрибут OnClientClick и отобразит его как
<input type="checkbox" OnClientClick="alert(this.checked);" />
Поскольку браузер не распознает OnClientClick, ничего не произойдет. Это также не вызовет никаких ошибок, поскольку это просто еще один атрибут.
Вы можете подтвердить выше, посмотрев на визуализированный HTML.
И да, это совсем не интуитивно.
Потому что это два разных типа элементов управления ...
Видите ли, ваш веб-браузер не знает о программировании на стороне сервера. он знает только о своей собственной модели DOM и моделях событий, которые он использует ... И о событиях щелчка объектов, отображаемых в ней. Вам следует изучить окончательную разметку, которая фактически отправляется браузеру из ASP.Net, чтобы увидеть различия, которые вы сами.
<asp:CheckBox runat="server" OnClick="alert(this.checked);" />
отображает в
<input type="check" OnClick="alert(this.checked);" />
, а
<asp:CheckBox runat="server" OnClientClick="alert(this.checked);" />
отображает в
<input type="check" OnClientClick="alert(this.checked);" />
Теперь, насколько я могу вспомнить, нигде нет браузеров, поддерживающих событие "OnClientClick" в их DOM ...
Если есть сомнения, всегда просматривайте источник вывода, когда он отправляется в браузер ... есть целый мир отладочной информации, которая вы можете видеть.
Вы правы, это непоследовательно. Происходит то, что CheckBox НЕ ИМЕЕТ серверного события OnClick, поэтому ваша разметка отображается в браузере. http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.checkbox_events.aspx
В то время как Button имеет OnClick, поэтому ASP.NET ожидает ссылки на событие в разметке OnClick.