2010-08-21 11 views
0

비즈니스 로직 계층에서 유효성 검사 (범위) 검사가 제어되는 응용 프로그램에서 작업하고 있습니다. 코드는 다음과 유사합니다BLL에서 TextBox 포커스 설정 ASP.NET

public string ValidateRange(int value, int lowRange, int highRange, string fieldDesc, System.Web.UI.WebControls.TextBox txtBox) 
{ 
    string msg = ""; 

    if (value >= lowRange & value <= highRange) 
     msg = ""; 
    else 
    { 
     msg = "Please enter a value between " + lowRange + " and " + highRange + " for \"" + fieldDesc + ".\""; 
     txtBox.Focus(); 
    } 

    return msg; 
} 

나는 그래서 그것을가 통과 할 수 있도록 누군가가 나에게 기능과 BLL를 처리하는 가장 효율적인 방법을 설명 할 수있는 기대했다 잘못이를하고있어 확실 해요 프레 젠 테이션 레이어 멋지게. 내 희망은 BLL과의 상호 작용을 폼의 TextBox 컨트롤에 대한 ValidateRange 검사와 각각의 반환을 제한 할 수 있다는 것입니다. 이 문제에 잘못 접근하고 있다면 알려 주시기 바랍니다. 이 방법으로 작동하는 경우 BLL이 프레젠테이션 레이어에서 TextBox에 액세스하도록 허용 할 수 있습니까?

도움 주셔서 감사합니다.

답변

1

필자는 BLL에 텍스트 상자 또는 프레젠테이션 관련 내용을 포함 시키려하지 않습니다. Afterall, BLL은 프리젠 테이션에 독립적 인 것으로되어 있습니다. 그렇지 않으면 Windows Forms 프레젠테이션 레이어 (ASP.NET과 함께 사용)를 작성해야한다면 BLL에 모든 새 메서드를 다시 작성하거나 추가하여 System.Windows.Forms를 지원하도록해야합니다 . 텍스트 상자! 두 개의 프리젠 테이션 레이어가 동일한 BLL 메소드/코드를 공유 할 수없는 경우 n 티어의 모든 목적을 상실합니다.

아니요, BLL에서 텍스트 상자 등의 흔적을 제거하고 대신 프레젠테이션 레이어 자체에 자동으로 텍스트 상자를 맞추는 코드를 작성하는 것이 좋습니다.

ASP.NET의 기본 제공 유효성 검사 (Page.IsValid 및 CausesValidation 등)를 사용하는 경우 어떤 유효성 검사기가 false로 돌아 왔는지 확인하고 그런 식으로 포커스를 설정해야합니다. 여전히 BLL에 오류 메시지를 제공 할 수 있습니다.

예를 들어 CustomValidator를 사용하면 BLL 메서드 ValidateRange를 호출 할 수 있습니다. 반환 값이 String.Empty이면 true (유효한)를 반환합니다. 비어 있지 않거나 null이 아닌 경우 오류가 있음을 알고 있으므로 CustomValidator의 ErrorMessage 및/또는 Text 속성을 반환 된 문자열로 설정 한 다음 false (잘못된 값)를 반환합니다.

+0

우리는 ASP.NET 유효성 검사기를 사용하지 않도록 지시 받았으므로 자동 초점 맞추기 텍스트 상자 방법을 조사하고 통합하려고합니다. 감사합니다. – Robert