C# 如何使用Razor/Webforms语法访问属性中的属性

C# 如何使用Razor/Webforms语法访问属性中的属性,c#,asp.net,C#,Asp.net,我正在尝试使用正则表达式验证器设置文本区域的最大长度限制(如果有更好的方法,请告诉我)。这是一个ASP.NETWebForms用户控件。我现在的代码是 <asp:Panel ID="labeledTextBox" runat="server"> <asp:Label ID="label" CssClass="label" ClientIDMode="Static" runat="server"/> <asp:TextBox ID="textBox"

我正在尝试使用正则表达式验证器设置文本区域的最大长度限制(如果有更好的方法,请告诉我)。这是一个ASP.NETWebForms用户控件。我现在的代码是

<asp:Panel ID="labeledTextBox" runat="server">
    <asp:Label ID="label" CssClass="label" ClientIDMode="Static" runat="server"/>
    <asp:TextBox ID="textBox" CssClass="labeledTextBox" TextMode="MultiLine" ClientIDMode="Static" runat="server"/>
    <asp:Label ID="textBoxLengthLabel" CssClass="textBoxLengthLabel" ClientIDMode="Static" runat="server">Maximum <%= MaxLength %> characters</asp:Label>
    <asp:RegularExpressionValidator ID="textboxLengthValidator" Display="Dynamic" ControlToValidate="textBox" ValidationExpression="^[\s\S]{0,<%= MaxLength %>}$" ErrorMessage="Test Message" ClientIDMode="Static" runat="server" />
</asp:Panel>
我设置的值在
文本框LengthLabel
中正确显示,例如,
最多500个字符

但是,它在验证器的属性中是字面意义上的。客户端上的标记是

<SPAN id=textboxLengthValidator
      style="COLOR: red; DISPLAY: inline"
      controltovalidate="textBox"
      errormessage="Test Message"
      validationexpression="^[\s\S]{0,<%= MaxLength %>}$"
      isvalid="false"
      display="Dynamic">Test Message</SPAN>
测试消息

如何在属性中使用代码隐藏文件中的属性?

在页面加载或提交时的代码隐藏中,您只需添加atribute即可

textBox.Attributes.Add("maxlength",  MaxLength.ToString());

谢谢我不需要“maxlength”属性。我需要
validationexpression
将字段作为值的一部分。我可以在validator本身的服务器端执行类似的操作,但我想知道是否有一种方法可以在标记中执行。不确定在客户端的validationexpression中执行类似的验证是什么意思?我最终希望将
文本框
控件限制为
n
个字符。因为我找不到
TextLengthValidator
控件,所以我认为下一个最好的东西应该是正则表达式验证器。我希望此控件可重用,因此我希望允许不同的最大长度。我在代码隐藏文件中有MaxLength属性,但如果在属性中访问该属性,则无法获取该属性的值,但如果它本身(如
textBoxLengthLabel
控件中)没有问题。
textBox.Attributes.Add("maxlength",  MaxLength.ToString());