为什么AjaxControlToolkit TabContainer呈现所有自定义控件标记属性?

时间:2011-07-08 13:40:14

标签: asp.net visual-studio-2010 custom-controls ajaxcontroltoolkit

这是一个奇怪的解释,但希望我有道理。

我们的组织拥有一个我们在解决方案中使用的自定义控件库。这些控件的一个示例是一个文本框和一组验证器,它们可以通过标记中设置的属性进行适当配置。

我现在遇到一个问题,当使用这个控件(我相信它缩小了它)一个TabContainer。

如果我想在容器中使用以下标记:

<scc:TextBox ID="txtEmailAddr" runat="server" CssClass="input EmailAddress" EnforceEntry="EmailAddress" ErrorMessage_RequiredFieldNotCompleted="" ErrorMessage_ShowExclamation="true" MaxLength="150" ShowErrorMessageBelow="false" Label="Email Address " />

当我保存或重新加载.aspx标记时,它会为同一个控件呈现以下标记:

<scc:TextBox ID="txtEmailAddr" runat="server" CssClass="input EmailAddress" EnforceEntry="EmailAddress" ErrorMessage_RequiredFieldNotCompleted="" ErrorMessage_ShowExclamation="True" MaxLength="150" ShowErrorMessageBelow="False" Label="Email Address " ClientSidePreventInvalidChars="True" EnableClientScript="True" EnfoceOnPaste="False" EnforceMaxLengthWithRXOnMultiline="True" EnforceOnPaste="False" EnforceSpaceInPostcode="True" ErrorMessage_InvalidFormat="Email Address : Please enter a valid email address" ErrorMessage_NumericValueInvalidOrOutOfRange="Email Address requires a number to be entered in the range to ." GuidanceText="" GuidanceText_RenderInMouseoverPanel="False" JavascriptURL="~/Include/TextBoxMaximumLength.js" LabelBold="False" LabelCSSClass="" MaxValue="9999999" MinValue="-9999999" Read_Only="False" RememberAnswer="False" RenderInParagraphs="True" RenderRequiredTextForRequiredFields="True" Required="True" RequiredField_InitialValue="" Rows="0" ShowMaxLength="False" Text="" TextBox_TabIndex="0" TextboxSkinID="" TextMode="SingleLine" TooltipPopup_BodyText="" TooltipPopup_TooltipText="(guidance)" ValidationGroup="" ValidationExpression="" />

除了现在在标记中呈现的属性覆盖实际控件的默认功能之外,这不会是一个问题。在这种情况下,默认的电子邮件地址正则表达式被忽略,因为属性'ValidationExpression'被设置为空字符串!

我再次将默认正则表达式放在该属性中,但我只想理解为什么标记以这种方式运行?

感谢。

1 个答案:

答案 0 :(得分:1)

获取AjaxContolToolkit的代码并逐步执行以查看为何呈现所有属性。您可以根据需要调整该代码并编译dll并使用它。从个人经验来看,这是我用于工具包的唯一方法,因为你描述的行为。