Không ai trong số các ASP.NET cung cấp xác nhận cho phép bạn thực hiện xác nhận có điều kiện dựa trên kiểm soát khác. Tuy nhiên, bạn có thể đạt được điều này bằng cách sử dụng CustomValidator thực hiện xác thực trên phía máy khách, phía máy chủ hoặc cả hai (ở mức tối thiểu, xác thực phía máy chủ được khuyến nghị). Các trình xác nhận hợp lệ hoạt động tốt cùng với các trình thuật sĩ.
mẫu đánh dấu ASP.NET:
<asp:DropDownList ID="OptionsDropDownList" runat="server">
<asp:ListItem Text="Website" />
<asp:ListItem Text="Search Engine" />
<asp:ListItem Text="Other" />
</asp:DropDownList>
<asp:TextBox ID="OtherTextBox" runat="server" />
<asp:CustomValidator ID="custvOptionsDropDownList" runat="server" ControlToValidate="OptionsDropDownList"
ValidateEmptyText="true" Display="Dynamic" ClientValidationFunction="validateOtherTextBox"
ErrorMessage="This field is required!" OnServerValidate="ValidateOtherTextBox" />
Javascript cho ClientValidationFunction:
<script type="text/javascript" language="javascript">
function validateOtherTextBox(event, args) {
var textbox = document.getElementById('<%= OtherTextBox.ClientID %>').value;
if (args.Value == 'Other')
args.IsValid = (textbox != '');
else
args.IsValid = true;
}
</script>
Code-Behind cho OnServerValidate:
protected void ValidateOtherTextBox(object source, ServerValidateEventArgs args)
{
if (OptionsDropDownList.SelectedValue == "Other")
{
args.IsValid = (OtherTextBox.Text.Trim() != "");
}
}
Lưu ý rằng đó là lựa chọn của bạn để thực hiện bất cứ điều gì bạn cần. Bạn hoàn toàn có thể bỏ qua xác thực Javascript và xóa mã đó cũng như thuộc tính ClientValidationFunction
. Ngoài ra, hãy lưu ý rằng Javascript đề cập đến điều khiển đích bằng cách sử dụng thuộc tính ClientID. Điều này là cần thiết vì ASP.NET gán một ID khác nhau khi trang là đầu ra và bạn sẽ muốn nó được cung cấp cho phương thức Javascript theo cách này (xem nguồn trên trang và bạn sẽ thấy rằng tên điều khiển có thêm tiền tố, vv).
Nguồn
2009-09-11 12:20:46