Page_Load는 양식 필드의 값을 변경하는 데 적합합니다. 기본 동작은 Ektron 서버 컨트롤이 Page_Init 중에 데이터를로드하는 것입니다.
실제 문제는 기본값을 얻는 방법입니다. Ektron 양식 (더 구체적으로 필드의 기본값)을 정의하는 데이터를 얻을 수있는 모든 가능한 방법을 시도해 보았습니다. 나는 이것이 약간의 해킹이지만 인정된다. 공상
var xml = XElement.Parse("<ekForm>" + cmsFormBlock.EkItem.Html + "</ekForm>");
var inputField = xml.Descendants("input").FirstOrDefault(i => i.Attribute("id").Value == "SampleTextField");
string defaultValue = inputField.Attribute("value").Value;
if (defaultValue == "The default value for this field is 42")
{
// do stuff here...
}
내 FormBlock 서버 컨트롤은 ASPX 측에 정의, 아무것도 : 그래서, 기본적으로
using System.Xml.Linq;
:
<CMS:FormBlock runat="server" ID="cmsFormBlock" DynamicParameter="ekfrm"/>
그리고, 물론, XElement를 다음과 같은 사용하여 문을 필요로하지 않는다 단일 루트 요소로 HTML을 래핑하여 유효한 XML이되도록합니다. Ektron은 콘텐츠가 XHTML 일 필요가 있음을 잘 알고 있으므로이 은이어야합니다. 당연히 이것은 이것을 프로덕션 환경에서 사용하기 전에보다 복잡한 형식으로 테스트해야합니다. 또한, 수표 프로그래밍, 체력 검사, 시도/잡기 등의 수비 프로그래밍을 권장합니다.
XML로 구문 분석 된 후 value
속성을 가져 와서 양식 필드의 값 속성을 가져올 수 있습니다. 설정 한 샘플 양식의 경우 다음이 양식의 HTML (EkItem.Html)의 일부였습니다.
<input type="text" value="The default value for this field is 42" class="design_textfield" size="24" title="Sample Text Field" ektdesignns_name="SampleTextField" ektdesignns_caption="Sample Text Field" id="SampleTextField" ektdesignns_nodetype="element" name="SampleTextField" />