.NET 웹 사용자 정의 컨트롤을 작성했습니다. 여기에는 몇 가지 서버 컨트롤과 일부 JavaScript가 포함되어 있습니다.컨트롤 서버와 연결된 액세스 서버 컨트롤?
또한 현재 컨트롤에 유효한 데이터가 포함되어 있는지 나타내는 값을 반환하는 JavaScript 기능이 전역 ValidateMyControl()
입니다. 이 함수는 컨트롤이 포함 된 페이지의 JavaScript에서 호출 할 수 있습니다.
제 문제는 페이지에 두 개 이상의 컨트롤이있는 경우입니다. 페이지의 클라이언트 스크립트가 다음과 같이 컨트롤 ID를 전달하도록 할 수 있습니다.
ValidateMyControl('<%= MyControl.ClientID %>');
코드가 유효성을 검사하려는 인스턴스를 식별합니다.
그러나 내 ValidateMyControl()
컨트롤은 요청 된 인스턴스와 연결된 서버 컨트롤을 참조하기 위해 해당 ID를 어떻게 사용합니까?
내가 생각한 것은 나를 위해 모이는 것 같습니다. 어떤 팁? 또는 이와 같은 여러 인스턴스를 처리하는 다른 방법은?
편집 :
그래서 내가 생각 한 가지 방법은 다음과 같이 보일 것이다 :
var instanceData = {};
$(function() {
instanceData['<%= this.ClientID %>'] = {
HiddenID: '<%= hdnCompanyId.ClientID %>',
TextID: '<%= txtCompanyName.ClientID %>',
ErrorMessageID: '<%= divErrorMessage.ClientID %>'
};
});
아이디어가 ID에 컨트롤 인스턴스를 매핑 초기화하는 동안 배열에 객체를 추가하는 것입니다 그것의 서버 컨트롤이야.
그러나 이것은 비효율적 인 것처럼 보입니다. 더 좋은 방법을 찾고 싶어합니다.
합리적인 제안처럼 보이지만 컨트롤 자체에 대한 요소가 없습니다. 자식 컨트롤을 렌더링하지만 컨테이너에 대한 요소는 없습니다. –
사용자 정의 컨트롤의 내용을 Panel (클라이언트의 div)에 래핑하고'ValidateMyControl ('<% = MyControl.Panel.ClientID %>');'를 사용하십시오. 또는 'id = "<% = MyControl.ClientID %>"'인 runat-server가 아닌 div에서도 가능합니다. – Igor