2022年7月28日 星期四

[研究][ASP.NET]檢查 TextBox TextMode="MultiLine" 的最大長度限制

[研究][ASP.NET]檢查 TextBox TextMode="MultiLine" 的最大長度限制

2022-07-28

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C#

TextBox 雖然有個 MaxLength 屬性,可以限制輸入最大長度,但若是在 TextMode="MultiLine"  時,該屬性是無效的,必須另外想辦法。

********************************************************************************

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" 
Inherits="WebApplication16.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:TextBox ID="TextBox1" TextMode="MultiLine" 
            Rows="10" Columns="40" runat="server"></asp:TextBox>
        <br />
        <%--不能只用 ^[\s\S]{0,10}$,會沒計算到換行字元--%>
        <asp:RegularExpressionValidator runat="server"
            ControlToValidate="TextBox1" Display="Dynamic"
            ValidationExpression="^(?:\S|[^\S\r\n]|\r?\n){0,10}$"
            ForeColor="Red" ErrorMessage="不可超過10字">
        </asp:RegularExpressionValidator>
        <br />
        <asp:Button ID="Button1" runat="server" Text="Button" />
    </form>
</body>
</html>


Default.aspx.cs

using System;
using System.Web.UI;

namespace WebApplication16
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            UnobtrusiveValidationMode = UnobtrusiveValidationMode.None;
        }
    }
}


(下圖)檢查會包含 CR, LF,所以超過10個字,出現訊息。

(完)

相關

[研究][ASP.NET]WebForms UnobtrusiveValidationMode 需要 'jquery' 的 ScriptResourceMapping。請加入 ScriptResourceMapping 命名的 jquery (區分大小寫)。http://shaurong.blogspot.com/2021/07/aspnetwebforms-unobtrusivevalidationmod.html


沒有留言:

張貼留言