영어 버전:http://dflying.dflying.net/1/archive/110_build_your_own_transformers_in_aspnet_atlas.html
ASP.NET Atlas 바인딩은 두 개체를 연결하는 강력한 방법입니다. (바인딩에 대한 자세한 내용은 http://dflying.cnblogs.com/archive/2006/04/04/366900.html 을 참조하세요.) Atlas 바인딩은 소스 객체의 변경된 속성을 지정된 속성에 자동으로 적용합니다. 대상 개체의. 그러나 때로는 이 속성을 대상 객체에 적용하기 전에 일부 수정하고 싶을 수도 있습니다. 예를 들어, 색인화된 목록을 표시할 때 JavaScript에서 색인이 기본값 0 대신 1부터 증가하기 시작하도록 할 수 있습니다. 이때 Atlas Transformer를 사용해야 합니다. Atlas의 Transformer는 필요한 필터링/장식/변환을 수행하기 위해 소스 객체의 속성에서 대상 객체의 속성으로 값을 할당하는 프로세스에 삽입됩니다. 할당할 속성에 대해(여기서는 소스 속성에 1을 추가하는 것임) 대상 속성에 할당합니다.
Atlas는 Add, Multiply, Compare 등과 같은 일부 내장 변환기를 제공합니다. 그러나 실제 개발에서는 대부분의 경우 자체 변환기를 정의해야 합니다. CustomBooleanTransformer의 예를 개발하여 사용자 정의 변환기를 작성하는 방법에 익숙해지도록 하겠습니다.
CustomBooleanTransformer는 부울 값을 Yes/No 또는 Completed/InProgress와 같은 사용자 정의 형식으로 변환하는 데 사용됩니다. 사용자에게 부울 값을 표시하기 위해 바인딩을 사용하기로 선택한 경우 이 변환기는 매우 유용하며 사용자에게 보다 친숙한 사용자 경험을 제공할 것입니다.
일반적으로 변환기를 만드는 과정은 다음 네 단계로 이루어집니다.
소스 바인딩 개체에서 전달된 변환할 값을 얻습니다. 여기서는 먼저 get_value()를 호출하여 들어오는 값을 얻고 이를 부울 유형으로 변환합니다.
변압기의 매개변수를 가져옵니다. 여기서 매개변수는 쉼표(,)로 두 부분으로 나눌 수 있는 문자열입니다. 부울 true는 첫 번째 부분으로 변환되고 false는 두 번째 부분으로 변환됩니다. 전달된 매개변수가 비어 있으면 기본 문자열 true/false가 대신 사용됩니다.
변환을 수행합니다. 이 단계에서는 자체 로직을 사용하여 들어오는 값을 나가는 값으로 변환해야 합니다(일반적으로 이전 단계에서 얻은 변환기의 매개 변수 사용). 여기서는 먼저 매개변수를 쉼표(,)를 사용하여 두 부분으로 나눈 다음 true를 첫 번째 부분으로 바꾸고 false를 두 번째 부분으로 바꿉니다. 인수를 두 부분으로 나눌 수 없으면 대신 true/false를 사용하십시오.
변환된 값을 출력하려면 set_value() 메서드를 호출하여 이를 달성합니다.
다음은 CustomBooleanTransformer에 대한 JavaScript 코드입니다. CustomBooleanTransformer.js로 저장하세요.
Sys.BindingBase.Transformers.CustomBoolean = 함수(발신자, eventArgs) {
// 1단계, 입력값을 얻습니다.
var value = eventArgs.get_value();
if (typeof(value) != '부울') {
값 = Boolean.parse(값);
}
// 2단계, 변환에 인수 가져오기가 사용됩니다.
var customString = eventArgs.get_transformerArgument();
if (customString == null || customString == '') {
customString = '참, 거짓';
}
// 3단계, 변환을 수행합니다.
var customValues = customString.split(',');
if(customValues.length != 2)
{
customValues[0] = 'true';
customValues[1] = 'false';
}
var newValue = 값 ? customValues[0] : customValues[1];
// 4단계, 변환된 값을 출력으로 설정합니다.
eventArgs.set_value(newValue);
}
좋습니다. 이제 이 CustomBooleanTransformer를 테스트해 보겠습니다. 페이지에 확인란과 텍스트 상자를 추가하고 바인딩합니다. 확인란을 선택/선택 취소하면 해당 변환된 부울 값이 텍스트 상자에 표시됩니다.
다음은 ASPX 파일의 HTML 정의입니다. ScriptManager에서 CustomBooleanTransformer.js 파일에 대한 참조를 추가하는 것을 잊지 마세요.
<atlas:ScriptManager ID="sm1" runat="서버">
<스크립트>
<atlas:ScriptReference Path="CustomBooleanTransformer.js" />
</스크립트>
</atlas:ScriptManager>
<input id="myCheckbox" type="checkbox" />
<input id="myTextbox" type="text" />
아래는 Atlas 스크립트 정의입니다. 여기서는 Boolean 값인 true를 Yes로, false를 No로 변환하기 위해 TransformerArgument를 'Yes,No'로 지정합니다. <페이지 xmlns:script=" http://schemas.microsoft.com/xml-script/2005 ">
<참고자료>
</참조>
<구성요소>
<checkBox id="myCheckbox" />
<textBox id="myTextBox">
<바인딩>
<바인딩 dataContext="myCheckbox" dataPath="확인됨"
property="text" 변환="CustomBoolean" TransformerArgument="예,아니요" />
</바인딩>
</textBox>
</구성요소>
</page>