Я использовал бы bitkeeper. Я использовал bitkeeper, clearcase, accurev, по необходимости, подрывная деятельность, cvs, sccs и rcs, и изо всех тех bitkeeper были далеки и выше лучшего. Я играл с мерзавцем, и был впечатлен его скоростью, но я думал, что его UI был немного громоздким (хотя то мнение было сформировано только после использования его в течение нескольких неполных рабочих дней).
bitkeeper имеет довольно неуклюже выглядящие графический интерфейсы пользователя, но они исключительно функциональны. bitkeeper инструменты командной строки возможно лучше среди аналогов, и ее возможности слияния были абсолютно фантастическими.
, Что я наиболее любивший о bitkeeper (и это, вероятно, верно для всех распределенных систем) - то, что ответвления были очень дешевы. Создание ответвлений было образом жизни, а не чем-то для боязни.
Вы также можете применить правило, установив классы для элемента. Например, если вы укажете класс «required» для входа, то требуемое правило применяется к этому элементу. Для этого вы должны использовать свойство CssClass элемента управления. Возможно, вам придется поэкспериментировать с составными элементами управления, такими как RadioButtonList, чтобы убедиться, что класс применяется к сгенерированным элементам ввода, а не к контейнеру. Если у вас возникли проблемы, один из способов сделать это - добавить класс с помощью jQuery после загрузки страницы на основе селектора.
<asp:RadioButtonList id="RadList" runat="server" CssClass="required">
...
</asp:RadioButtonList>
или
<script type="text/javascript">
$(function() {
$(':radio').addClass('required');
$('form').validate();
});
</script>
Для сложных правил на основе классов вы можете добавить новые правила, используя addClassRules
.
<script type="text/javascript">
$(function() {
$.validator.addClassRules({
range0to10: {
range: [0, 10]
},
name: {
minlength: 2,
required: true
}
});
$('form').validate();
});
</script>
<form ... >
<input type="text" name="rating" id="rating" class="range0to10" />
<input type="text" name="firstName" id="firstName" class="name" />
<input type="text" name="lastName" id="lastName" class="name" />
</form>
После нескольких дней, когда это сводило меня с ума, задав этот вопрос заставил меня задуматься, как заставить элемент возвращаться должным образом, и я наткнулся на этот метод прямого обращения, который позволяет мне это делать:
$("input:radio[name='ctl00$ContentPlaceHolder1$dgQuestions$ctl14$iRadList_Col0']").rules("add", { required: true });