ASP.Net 多行文本框最大长度

Posted

技术标签:

【中文标题】ASP.Net 多行文本框最大长度【英文标题】:ASP.Net Multiline Textbox Maxlength 【发布时间】:2017-07-05 03:15:01 【问题描述】:

我一直在寻找一种方法来限制 TextBox 中的文本,看起来像这样

<asp:TextBox runat="server" ID="tbTest" TextMode="MultiLine"  
             MaxLength="20" Rows="5" Columns="30" >
</asp:TextBox>

属性MaxLength="20"仅在另一个属性TextMode="MultiLine"设置时有效。它甚至没有被渲染。

html 中的输出如下所示:

<textarea name="ctl00$ContentPlaceHolder1$tbTest" 
          id="ctl00_ContentPlaceHolder1_tbTest" rows="5" cols="30">
</textarea>

如果您在 SO 上搜索解决此问题的解决方案,您会得到 2 种建议方法:

添加一个 (asp:RegularExpression) 验证器并验证控件 添加一个 javascript,在达到限制时删除最后一个插入字符。

但是

大多数答案是 2013 年之前的,maxlength 在所有浏览器上的支持是从 2013 年 IE10 发布 (reference) 开始的。

目前每个浏览器都支持此属性 - 请自行测试:https://jsfiddle.net/wuu5wne1/

问题

如何强制 ASP.Net 将此属性应用于我的多行文本框?

【问题讨论】:

我认为当前的浏览器没有太大变化。您仍然需要使用 JS 或正则表达式。 我认为如果你从代码后面添加 MaxLength 属性它将起作用,或者使用 html @ManishGoswami &lt;textarea&gt;asp:TextBox 相比有什么缺点吗? 所以你可以尝试第一个选项..从后面的代码中设置属性。还有一个选项是打开使用 jquery/javascript/正则表达式 【参考方案1】:

欢迎来到 2020 - 这个终于可以在所有浏览器上运行

protected void Page_Load(object sender, EventArgs e)

    if (!IsPostBack)
    
        tbTest.Attributes.Add("maxlength", "20");
    

【讨论】:

【参考方案2】:

我对此的解决方案是在 document.ready 中通过 jquery 手动设置 maxlength 属性:

$(document).ready(function ()

    $('#<%=tbTest.ClientID%>').prop('maxlength', 20);

是的,它有点 hacky,但是如果你想使用 asp 控件(我不想部署代码更改),它可以工作。

【讨论】:

【参考方案3】:

在 Visual Studio 2019 中,如果您添加 columns 属性,maxLength 将起作用

<asp:TextBox runat="server" Columns="1" MaxLength="50" class="form-control"  ID="txtFirstName" ClientIDMode="Static" required />

【讨论】:

这里不工作。

以上是关于ASP.Net 多行文本框最大长度的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 多行文本框默认值

我们可以在多行文本框中找到行大小

是否可以在文本框 ASP.NET 中使用多行占位符?

为多行文本框指定最大长度

MFC的Dialogbox多行文本框(CEdit)有最大字符限制,默认最大显示长度是?怎么实现显示160KB大小的文件

Asp.Net MVC 中 DataAnnotations StringLength 中文本框的 maxlength 属性