Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何限制文本框中允许的字符数?_Asp.net - Fatal编程技术网

Asp.net 如何限制文本框中允许的字符数?

Asp.net 如何限制文本框中允许的字符数?,asp.net,Asp.net,这是我的文本框。如何限制用户可以在其中键入的字符数?MaxLength=“Int32” 将MaxLength属性设置为字符数。您正在查找MaxLength:Look是否尝试在文本框上设置MaxLength属性?因为这件事对我来说很重要。我没有保留多行属性 <asp:TextBox ID="txtBodySMS" runat="server" Rows="10" MaxLength="220" TextMode="Mu

这是我的文本框。如何限制用户可以在其中键入的字符数?

MaxLength=“Int32”



将MaxLength属性设置为字符数。

您正在查找MaxLength:Look

是否尝试在文本框上设置MaxLength属性?因为这件事对我来说很重要。我没有保留多行属性

<asp:TextBox ID="txtBodySMS" runat="server" Rows="10" MaxLength="220"                         
           TextMode="MultiLine" Width="100%"></asp:TextBox>


AFAIK maxlength从未与“多行”模式配合使用。因此,我建议使用一些客户端js/jquery和服务器端来解决这个问题。

为您的文本框添加FliterTextBoxExtender类型的扩展器
应该是这样的

<asp:TextBox ID="txtBodySMS" runat="server" Rows="10" MaxLength="2" Width="100%"></asp:TextBox>

MaxLength
不适用于ASP.NET中带有
TextMode=“MultiLine”
的文本框。要做到这一点并保持多行标记,一个简单的方法是添加:

<asp:TextBox ID="TxtCellular" runat="server"></asp:TextBox>
<asp:FilteredTextBoxExtender ID="TxtCellular_FilteredTextBoxExtender" 
                    runat="server" Enabled="True" TargetControlID="TxtCellular" FilterType="Numbers">
</asp:FilteredTextBoxExtender>
编辑选项二(客户端):这里是一个简单的jquery解决方案。在头脑中包含以下脚本,而不是附加
onkeypress
或编辑服务器端代码

    protected void Page_Load(object sender, EventArgs e)
    {
        txtBodySMS.Attributes.Add("maxlength", "10");
    }

请记住,在任何一种情况下,都可以删除客户端验证。如果您将其存储在数据库中,则应始终在服务器端进行验证。

最大字符长度验证(允许最多8个字符)


最小字符长度验证(至少需要8个字符)


最小和最大字符长度验证(至少需要5个字符,最多需要8个字符)


需要注意的是,单独使用
MaxLength
(与其他答案一样,不添加其他属性)仅适用于.NET Framework 4.5及以上版本的项目

我使用的是4.5,它对我的项目起到了作用

<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator Display = "Dynamic" ControlToValidate = "TextBox3" ID="RegularExpressionValidator3" ValidationExpression = "^[\s\S]{5,8}$" runat="server" ErrorMessage="Minimum 5 and Maximum 8 characters required."></asp:RegularExpressionValidator>

只需在.cs页面加载中的两行下方键入

<asp:TextBox ID="txtSample" MaxLength="3" runat="server"/>

希望这会有帮助

在ASP.NET的设计中,您可以设置textbox的MaxLength属性,这似乎是一个奇怪的疏忽(不考虑textareas的异常情况),但如果不显式添加验证程序,似乎无法在服务器端强制执行此限制。如果您有很多字段,只是想确保没有人通过注入自己的POST数据来补贴表单的限制,那么这将是一个麻烦。所以我写了这篇文章,它似乎起到了作用——很明显,你可能不想强迫别人回答。结束

textbox1.Attributes.Remove("MaxLength");
textbox1.Attributes.Add("MaxLength", "30");
Protected Sub Page\u Load(发送方作为对象,e作为System.EventArgs)处理Me.Load
Dim colControls As Collection=新集合
getControlList(colControls,Me)
对于colControls中的每个ctlNextPlease As控件
如果TypeOf(ctlNextPlease)为文本框,则
Dim ctlTextBox As TextBox=ctlNextPlease
如果Len(请求(ctlTextBox.ID))>ctlTextBox.MaxLength,则
Response.Write(“值”&Request(ctlTextBox.ID)&“submitted for”&ctlTextBox.ID&”超过了该值允许的最大长度(&ctlTextBox.MaxLength&”)
答复:End()
如果结束
如果结束
下一个
...
端接头
公共共享子getControlList(ByRef colControls作为集合,ByVal rootControl作为控件)
colControls.Add(rootControl)
如果rootControl.Controls.Count>0,则
对于每个控件,在rootControl.Controls中搜索为控件
getControlList(colControls,controlToSearch)
下一个
如果结束
端接头


这不起作用,他们仍然可以输入超过220个字符。如果出现问题,这是microsoft文档中的属性,则不需要删除MultiLine,但当您达到字符限制时-文本框被冻结,您无法从中删除任何内容。此功能在按键时生效,但是使用ctrl+v将大量文本粘贴到框中会打破这一点,您仍然可以输入尽可能多的文本like@Rich你们都是对的,这些年来我没有注意到这一点。我已经修复了当用户复制/粘贴到文本框时,投票答案不起作用的问题。因此,此答案的修改版本(即javascript/jquery中的处理)效果最好。纯代码答案是低质量的答案。您需要在代码中添加描述,否则将被视为低质量的答案
    $(document).ready(function () {
        $(".MultiLineLimit").on('change keydown paste input', function () {
            this.value = (this.value.length <= 10 ? this.value : this.value.substring(0, 10));
        });
    });
<asp:TextBox ID="txtBodySMS" CssClass="MultiLineLimit" runat="server" Rows="10" TextMode="MultiLine" Width="100%"></asp:TextBox>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator Display = "Dynamic" ControlToValidate = "TextBox1" ID="RegularExpressionValidator1" ValidationExpression = "^[\s\S]{0,8}$" runat="server" ErrorMessage="Maximum 8 characters allowed."></asp:RegularExpressionValidator>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator Display = "Dynamic" ControlToValidate = "TextBox2" ID="RegularExpressionValidator2" ValidationExpression = "^[\s\S]{8,}$" runat="server" ErrorMessage="Minimum 8 characters required."></asp:RegularExpressionValidator>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator Display = "Dynamic" ControlToValidate = "TextBox3" ID="RegularExpressionValidator3" ValidationExpression = "^[\s\S]{5,8}$" runat="server" ErrorMessage="Minimum 5 and Maximum 8 characters required."></asp:RegularExpressionValidator>
<asp:TextBox ID="txtSample" MaxLength="3" runat="server"/>
textbox1.Attributes.Remove("MaxLength");
textbox1.Attributes.Add("MaxLength", "30");
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load

        Dim colControls As Collection = New Collection
        getControlList(colControls, Me)
        For Each ctlNextPlease As Control In colControls
            If TypeOf (ctlNextPlease) Is TextBox Then
                Dim ctlTextBox As TextBox = ctlNextPlease
                If Len(Request(ctlTextBox.ID)) > ctlTextBox.MaxLength Then
                    Response.Write("The value <i>" & Request(ctlTextBox.ID) & "</i> submitted for <b>" & ctlTextBox.ID & "</b> exceeds the permitted maximum length (" & ctlTextBox.MaxLength & ") for that value")
                    Response.End()
                End If
            End If
        Next
...
End Sub

Public Shared Sub getControlList(ByRef colControls As Collection, ByVal rootControl As Control)
  colControls.Add(rootControl)
  If rootControl.Controls.Count > 0 Then
    For Each controlToSearch As Control In rootControl.Controls
      getControlList(colControls, controlToSearch)
    Next
  End If
End Sub