我正在使用Page.ParseControl将一些生成的asp.net控件注入到页面中。我正在注入如下标记:
Me.phScript.Controls.Add(Me.Page.ParseControl("<asp:TextBox runat=""server"" id=""txtAreaOfConcern"" TextMode=""multiline"" Rows=""5"" Width=""300"" MaxLength=""5"" />", True))
现在,当渲染它时,源html出现为
<textarea name="txtAreaOfConcern" rows="5" cols="20" id="txtAreaOfConcern" style="width:300px;">
按照正常情况添加的文本框呈现如下:
<input name="_tbStaticInput" type="text" maxlength="20" id="_tbStaticInput" style="height:104px;width:263px;" />
这是一个问题的原因是我不再拥有此页面所需的maxlength属性。
是否可以通过控制注入渲染输入,如果是这样的话?
答案 0 :(得分:1)
您正在将TextMode设置为要传递给ParseControl的字符串中的多行,您将始终获得textarea,这就是TextBox控件的工作方式。如果将它放在页面上的标记中或实例化TextBox类并将TextMode属性设置为多行,它将执行相同的操作。
与您的问题无关但是动态创建控件似乎是一种奇怪的方式,您正在解析的文本是字符串文字,并且不以任何方式动态。为什么不直接实例化TextBox类并设置属性,这样就可以通过编译时检查是否将属性设置为有效值。你这样做的方式你的字符串可以改为“AnIvalidValue”,一切都可以正常编译,但你会得到一个运行时异常。