포스트백 시 확인 요약에 오류 메시지를 추가하려면 어떻게 해야 합니까?
두 가지 질문:
사용자가 제출을 클릭할 때 포스트백에서 확인 요약에 오류 메시지를 추가하려면 어떻게 해야 합니까?
내장된 .net 유효성 검사 컨트롤을 사용하여 특정 텍스트 상자를 강조 표시할 수도 있습니까?
CustomValidator 컨트롤을 동적으로 생성하여 페이지에 직접 추가합니다.검증자 컬렉션입니다.
Dim err As New CustomValidator
err.ValidationGroup = "MyGroup"
err.IsValid = False
err.ErrorMessage = "The password is invalid"
Page.Validators.Add(err)
마크업에 CustomValidator를 추가하는 것과 달리 이 방법을 사용하면 서버 측 비즈니스 논리에 따라 임의 오류 메시지를 여러 개 추가할 수 있습니다.
페이지에 직접 추가할 수도 있지만 다음과 같은 몇 가지 규칙이 있습니다.
- 유효성 검사 그룹의 컨트롤과 동일한 명명 컨테이너에 컨트롤을 추가해야 합니다.
- 유효성 검사 메시지가 페이지의 임의 위치에 나타나지 않도록 하려면 특정 컨테이너에 유효성 검사기를 추가하거나 CSS 클래스 또는 스타일을 사용하여 이를 억제해야 합니다.
사용자 지정 클래스를 만들고 코드 한 줄로 메시지를 추가할 수 있는 IV Validator를 구현할 수도 있지만 이 방법은 검증 그룹을 지원하지 않습니다.
앤더스 je드스타드의 제안에 따라, 여기 편리한 확장 방법 세트가 있습니다.
Imports Microsoft.VisualBasic
Imports System.Runtime.CompilerServices
Public Module PageExtensions
<Extension()> _
Public Sub AddValidationError(ByVal p As System.Web.UI.Page, ByVal errorMessage As String)
p.AddValidationError(errorMessage, String.Empty)
End Sub
<Extension()> _
Public Sub AddValidationError(ByVal p As System.Web.UI.Page, ByVal errorMessage As String, ByVal validationGroup As String)
Dim err As New CustomValidator
err.ValidationGroup = validationGroup
err.ErrorMessage = errorMessage
err.IsValid = False
p.Validators.Add(err)
End Sub
End Module
사용자 지정 검증기를 추가하고 수동으로 설정합니다.IsValid
그리고.ErrorMessage
특성.이런 식입니다.
<asp:panel ID="ErrorsPanel" runat="server" CssClass="ErrorSummary">
<asp:CustomValidator id="CustomValidator1" runat="server"
Display="None" EnableClientScript="False"></asp:CustomValidator>
<asp:ValidationSummary id="ErrorSummary" runat="server"
HeaderText="Errors occurred:"></asp:ValidationSummary>
</asp:panel>
뒤에 있는 코드:
//
// Update the database with the changes
//
string ErrorDetails;
if (!Db.Update(out ErrorDetails))
{
CustomValidator1.IsValid = false;
CustomValidator1.ErrorMessage = ErrorDetails;
}
여기 NightOw888의 좋은 아이디어에 대한 약간의 확장이 있습니다.
public class ValidationError : CustomValidator
{
public ValidationError(string group, string msg)
: base()
{
base.ValidationGroup = group;
base.ErrorMessage = msg;
base.IsValid = false;
}
}
public static class PageExtensions
{
public static void ErrorMessage(this Page page, string group, string msg)
{
page.Validators.Add(new ValidationError(group, msg));
}
}
오류 메시지를 보내고 싶을 때는 언제든지 전화하세요.Page.ErrorMessage
그 메커니즘은 그가 제안한 것과 같습니다.
사용자 정의 검증기를 생성하여 페이지의 검증기 컬렉션에 추가하기만 하면 됩니다.
CustomValidator cv = new CustomValidator();
if(condition)
{
cv.IsValid = false;
cv.ErrorMessage = "This Catalog Data already exists.";
cv.ValidationGroup = "InputList";
this.Page.Validators.Add(cv);
}
참고: 검증 그룹을 지정하는 것을 잊지 마십시오. 그렇지 않으면 사용자 지정 검증자가 페이지에 추가되더라도 오류 메시지가 표시되지 않습니다.그리고 당신의 두 번째 질문(강조된 텍스트 상자)에 대한 답을 얻으면 게시하세요!
유효성 검사 요약에 오류 메시지를 추가하려면 유효성 검사 요약 및 기타 유효성 검사 컨트롤의 EnableClientScript 속성을 사용할 수 있습니다.EnableClientScript를 모두 false로 설정합니다.
<asp:ValidationSummary
HeaderText="You must enter a value in the following fields :"
DisplayMode="BulletList"
EnableClientScript="false"
runat="server"/>
컨트롤을 강조 표시하는 경우 아니요, 현재 컨트롤에서는 사용할 수 없습니다.
그러나 관련 컨트롤 근처에 유효성 검사 컨트롤을 두고 텍스트 속성을 "*"로 설정했습니다.그러면 유효성 검사가 실패하면 제어 실패에 가까운 것으로 나타납니다.
사용자 지정 검증기를 사용하여 실패한 컨트롤을 강조 표시할 수 있습니다.하지만 당신은 당신 자신의 구현을 작성해야 합니다.
다음은 검증 그룹 ID를 처리하는 검증 요약의 확장 방법인 위 답변 버전입니다.
public static void AddCustomMessage(this ValidationSummary summaryControl, string message)
{
summaryControl.Page.Validators.Add(new CustomValidator {
ValidationGroup = summaryControl.ValidationGroup,
ErrorMessage = message,
IsValid = false
});
}
언급URL : https://stackoverflow.com/questions/777889/on-postback-how-can-i-add-a-error-message-to-validation-summary
'sourcecode' 카테고리의 다른 글
CSS에서 *와 *|*의 차이점은 무엇입니까? (0) | 2023.09.01 |
---|---|
JpaRepository 및 중첩된 개체 목록으로 검색하는 방법은 무엇입니까? (0) | 2023.09.01 |
IE9은 F12를 친 후에만 아약스 호출을 올바르게 수행합니다. (0) | 2023.09.01 |
MySQL: 필드 기본값을 다른 열로 설정 (0) | 2023.09.01 |
mysql에 대한 도커의 액세스 권한 (0) | 2023.09.01 |