#c# #asp.net #validation
#c# #asp.net #проверка
Вопрос:
Я пытаюсь получить небольшую помощь с функцией проверки для моего назначения. Я полностью застрял на этом. Нам пришлось создать веб-форму с несколькими полями. Я настроил все остальное (имя пользователя длиной более 6 символов; пароль, скрытый звездочками, длиной более 8 символов и содержащий 1 заглавную и 1 строчную букву, 1 цифру и 1 специальный символ и т.д.).
Инструкции заключаются в том, что в каждое поле должно быть что-то введено. Мы должны были создавать различные поля, но одна из инструкций заключалась в создании списка флажков с 5 полями. Однако в инструкциях не указано, что должен быть выбран только один ответ, это то, к чему я стремлюсь.
Список флажков предназначен для возрастной демографии …. для пользователя, чтобы выбрать, в какой возрастной диапазон они попадают. Это то, что у меня есть:
ASPX-файл:
<tr class="Specific">
<td>
<asp:Label
ID="AgeLabel"
style="vertical-align:middle"
runat="server"
Text="Age Demographic:"
Font-Bold="True"
ForeColor="#016882">
</asp:Label>
</td>
<td>
<asp:CheckBoxList ID="Age" runat="server" Width="385px">
</asp:CheckBoxList>
</td>
</tr>
ASPX.Файл CS:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Age.Items.Add("amp;nbsp;18-24");
Age.Items.Add("amp;nbsp;25-34");
Age.Items.Add("amp;nbsp;35-44");
Age.Items.Add("amp;nbsp;45-54");
Age.Items.Add("amp;nbsp;55 ");
MyFormPanel.Visible = true; // show the form
} // End If
} // End Page_Load
Это просто заполняет флажки для меня. Я не могу заставить какой-либо валидатор работать с этим. Итак, что я сделал, это создал функцию для запуска при нажатии кнопки отправки. Эта функция проверяет, нажата ли только 1 флажок.
protected void cmdSubmit_Click(object sender, EventArgs e)
{
int test = 0;
result.Text = "";
foreach (ListItem lstItem in Age.Items)
{
if (lstItem.Selected == true)
{
test = 1;
}
}
if (test == 0)
{
result.Text = "Please select one of the boxes in Age Demographic.";
}
else if (test != 1)
{
result.Text = "Please select only 1 checkbox in Age Demographic.";
}
else
{
return;
}
}
Мой вопрос … как я могу связать эту функцию с проверкой страницы? Мой мыслительный процесс заключается в том, что есть нечто, называемое Page .Является ли значение VALID логическим, правильно? Я думал, что я могу поместить что-то в эту функцию, которая присваивает isValid false, и если эта проверка проходит, то она присваивает isValid true . Я на правильном пути, размышляя здесь?
Я пробовал это в своем коде, но это говорит мне кое-что об этом свойстве, доступном только для чтения. У меня уже настроено много разных RequiredFieldValidators и RegularExpressionValidators, чтобы убедиться, что текстовые поля не пустые и что адреса электронной почты и номера телефонов отформатированы правильно, поэтому я не уверен, как эта функция может работать с ними. Любая помощь будет с благодарностью принята. Спасибо.
ОБНОВЛЕНИЕ: Теперь мне говорят, что пользователь может выбрать более одного флажка, поэтому список флажков является более подходящим. Но как мы будем проверять данные и включать информацию в сводку проверки?
Комментарии:
1. Будет проще использовать RadoButtonList вместо списка флажков, если вам нужно выбрать только один элемент из нескольких вариантов.
Ответ №1:
Вы хотите проверить, выбран ли хотя бы один элемент в контрольном списке?
Если это так, возможно, вы можете попробовать написать сценарий для его достижения. Вот простая демонстрация.
сценарий
<script type="text/javascript">
function ValidateCheckBoxList(sender, args) {
var checkBoxList = document.getElementById("<%=CheckBoxList1.ClientID %>");
var checkboxes = checkBoxList.getElementsByTagName("input");
var isValid = false;
for (var i = 0; i < checkboxes.length; i ) {
if (checkboxes[i].checked) {
isValid = true;
break;
}
}
args.IsValid = isValid;
}
</script>
CustomValidator
<form id="form1" runat="server">
<div>
<asp:CheckBoxList ID="CheckBoxList1" runat="server">
<asp:ListItem>A</asp:ListItem>
<asp:ListItem>B</asp:ListItem>
<asp:ListItem>C</asp:ListItem>
<asp:ListItem>D</asp:ListItem>
</asp:CheckBoxList>
<asp:CustomValidator ID="CustomValidator1" ErrorMessage="You need to select at least one item." ForeColor="Red" ClientValidationFunction="ValidateCheckBoxList" runat="server" />
</div>
<asp:Button ID="BtnCheck" runat="server" OnClick="BtnCheck_Click" Text="Check" />
</form>
Если перехватить исключение System.InvalidOperationException
, добавьте следующий оператор в Web.config
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>