mcpField
S
syncfusion-aspnetcore-numerictextbox

syncfusion-aspnetcore-numerictextbox

github.com/syncfusionデザイン・UI051 回インストール2 週間前に更新
リポジトリ

syncfusion-aspnetcore-numerictextbox について

ASP.NET Core で Syncfusion NumericTextBox を使った数値フォームを実装するガイドです。書式設定、範囲検証、精度、ローカライズを扱います。

主な機能

  1. 01通貨、割合、数値の書式設定
  2. 02最小値と最大値の指定
  3. 03小数精度と丸めの制御
  4. 04スピンボタンによる値の調整
  5. 05数値書式とツールチップのローカライズ
  6. 06ASP.NET Core モデルへの値のバインド

活用シーン

  1. 01給与や請求書のフォーム作成
  2. 02地域書式に対応した多通貨カート
  3. 03在庫やアンケート入力の範囲検証
  4. 04技術計算用の高精度な数値入力

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/syncfusion/aspnetcore-ui-components-skills --skill syncfusion-aspnetcore-numerictextbox

インストール後、Claude Code で/syncfusion-aspnetcore-numerictextboxを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
advanced-patterns.md
appearance-styling.md
getting-started.md
globalization-localization.md
number-formats.md
range-validation.md

詳細

ASP.NET Core での NumericTextBox の実装

NumericTextBox は、通貨/パーセンテージの書式設定、範囲検証、スピナーコントロール、精度設定、グローバリゼーション対応などの高度な機能を備えた、数値の入力に特化したコンポーネントです。このスキルでは、Syncfusion の Tag Helper 構文を使用して、ASP.NET Core アプリケーションに NumericTextBox を実装する方法を説明します。

このスキルを使用する場面

次のような場合に、このスキルを使用してください。

  • 値を自動的に書式設定する数値入力フィールドを作成する
  • 通貨やパーセンテージの入力コントロールを構築する
  • 範囲検証(最小値/最大値の制約)を実装する
  • 増減操作用のスピナーボタンを表示する
  • 小数点以下の精度や数値の書式設定を制御する
  • 国際的な数値形式や通貨に対応する
  • ロケール固有の区切り記号を使用して数値を書式設定する
  • 給与、価格、数量、パーセンテージの入力を実装する
  • 視覚的なフィードバックを伴う数値範囲の検証を行う
  • WCAG 2.2 レベル AA 規格に準拠した、アクセシブルな数値フォームを作成する

主な機能

機能用途
数値の書式設定通貨、パーセンテージ、またはカスタム形式(c2、p、n)で書式設定します
範囲検証最小値/最大値の制約を設定し、自動検証を行います
精度の制御小数点以下の桁数と丸め動作を制限します
スピナーボタン上下のコントロールで値を増減します
ステップ値スピナー操作の増分を定義します
通貨対応複数の通貨(USD、EUR、GBP など)を表示、書式設定します
パーセンテージ入力パーセンテージ値を変換して表示します
グローバリゼーション150 以上の地域固有の数値形式に対応します
ローカライズスピナーボタンのツールチップをユーザーの言語に翻訳します
RTL 対応アラビア語、ヘブライ語、ペルシャ語の右から左へのテキスト方向に対応します
データバインディングASP.NET Core モデルと双方向にバインドします
イベント処理Created、Change、Blur、Focus イベントに応答します

ドキュメントのナビゲーションガイド

はじめに

📄 参照: references/getting-started.md

  • 前提条件とシステム要件
  • Syncfusion.EJ2.AspNet.Core NuGet パッケージのインストール
  • _ViewImports.cshtml への Tag Helper の追加
  • CDN 経由でのスタイルシートとスクリプトリソースの追加
  • スクリプトマネージャーの登録
  • 最初の NumericTextBox の作成
  • ASP.NET Core モデルへのバインド
  • Tag Helper の構文と属性
数値形式

📄 参照: references/number-formats.md

  • 標準数値形式指定子(c、p、n、e、f)
  • 通貨記号とロケールを使用した通貨の書式設定
  • パーセンテージの変換と表示
  • カスタム数値形式のパターン
  • ロケール固有の書式設定(en-US、de-DE、fr-FR)
  • 出力例とエッジケース
  • 書式文字列のベストプラクティス
範囲検証

📄 参照: references/range-validation.md

  • 最小値と最大値の設定
  • 小数点以下の精度設定
  • ステップ値と増分の動作
  • 範囲内に収まるよう値を自動的に制限
  • 検証エラーの処理
  • 実際の検証パターン(給与、年齢、割引)
  • エッジケースと境界条件
外観とスタイル設定

📄 参照: references/appearance-styling.md

  • NumericTextBox ラッパーの CSS カスタマイズ
  • スピナーの上/下ボタンのスタイル設定
  • 入力の高さ、フォントサイズ、色
  • アイコンと前置/後置テンプレートの追加
  • Syncfusion テーマとのテーマ統合
  • レスポンシブデザインのパターン
  • 検証状態用のカスタム CSS クラス
グローバリゼーションとローカライズ

📄 参照: references/globalization-localization.md

  • 文化圏に基づく数値の書式設定(CLDR 対応)
  • 特定の地域のロケール設定
  • 複数通貨の書式設定
  • スピナーボタンのツールチップのローカライズ
  • RTL(右から左)言語への対応
  • 日付と数値の形式のカルチャーバインディング
  • タイムゾーンとロケールの検出
高度なパターン

📄 参照: references/advanced-patterns.md

  • ASP.NET Core モデルを使用したデータバインディング
  • C# と JavaScript による NumericTextBox のプログラム作成
  • イベント処理のパターン(Created、Change、Blur、Focus)
  • 複合的な検証シナリオ
  • Forms およびモデル検証との統合
  • オブザーバブルモデルとの双方向バインディング
  • セキュリティ:XSS の防止と入力のサニタイズ

クイックスタートの例

通貨形式の基本的な NumericTextBox(Tag Helper)

<div class="form-group">
    <ejs-numerictextbox id="salary" 
        name="salary" 
        placeholder="Enter salary"
        format="c2"
        min="0"
        max="1000000"
        float-label-type="Auto">
    </ejs-numerictextbox>
</div>
_ViewImports.cshtml 内(一度だけ設定)
@addTagHelper *, Syncfusion.EJ2
_Layout.cshtml 内(一度だけ設定)
<head>
    <link rel="stylesheet" href="https://cdn.syncfusion.com/ej2/24.1.48/fluent.css" />
</head>
<body>
    @RenderBody()
    
    <script src="https://cdn.syncfusion.com/ej2/24.1.48/dist/ej2.min.js"></script>
    <ejs-scripts></ejs-scripts>
</body>
結果

ユーザーに表示される内容:

  1. "$0.00" 形式の NumericTextBox
  2. 値を増減するスピナーボタン(↑↓)
  3. 「5000」を入力すると、「$5,000.00」と表示されます
  4. 0~1000000 の範囲外の値は自動的に修正されます
  5. フォーカスが外れると、数値が小数点以下 2 桁の通貨形式で表示されます

よくあるパターン

パターン 1:検証機能付き従業員給与フォーム

<form asp-action="SaveEmployee" asp-controller="Employee" method="post">
    <div class="form-group">
        <label asp-for="Salary"></label>
        <ejs-numerictextbox asp-for="Salary"
            format="c2"
            min="20000"
            max="500000"
            step="1000"
            float-label-type="Auto"
            css-class="e-outline">
        </ejs-numerictextbox>
        <small class="form-text text-muted">Salary range: $20,000 - $500,000</small>
    </div>

    <div class="form-group">
        <label asp-for="Bonus"></label>
        <ejs-numerictextbox asp-for="Bonus"
            format="c2"
            min="0"
            max="50000"
            step="100"
            float-label-type="Auto">
        </ejs-numerictextbox>
    </div>

    <button type="submit" class="btn btn-primary">Save Employee</button>
</form>
パターン 2:割引率を使った商品価格設定
<div class="row">
    <div class="col-md-6">
        <div class="form-group">
            <label asp-for="OriginalPrice"></label>
            <ejs-numerictextbox asp-for="OriginalPrice"
                placeholder="Original price"
                format="c2"
                min="0"
                step="0.01"
                float-label-type="Auto">
            </ejs-numerictextbox>
        </div>
    </div>

    <div class="col-md-6">
        <div class="form-group">
            <label asp-for="DiscountPercent"></label>
            <ejs-numerictextbox asp-for="DiscountPercent"
                placeholder="Discount %"
                format="p2"
                min="0"
                max="100"
                step="5"
                float-label-type="Auto"
                change="onDiscountChange">
            </ejs-numerictextbox>
        </div>
    </div>
</div>

<div class="form-group">
    <label>Final Price</label>
    <ejs-numerictextbox id="finalPrice"
        format="c2"
        read-only="true"
        float-label-type="Auto">
    </ejs-numerictextbox>
</div>

<script>
    function onDiscountChange(args) {
        var originalPrice = document.querySelector('input[id="originalPrice"]').value;
        var discountPercent = args.value;
        var finalPrice = originalPrice * (1 - discountPercent / 100);
        
        var finalPriceControl = document.querySelector('input[id="finalPrice"]');
        var finalPriceInstance = finalPriceControl.ej2_instances[0];
        finalPriceInstance.value = finalPrice;
    }
</script>
パターン 3:在庫数制約付き数量入力
<div class="form-group">
    <label asp-for="OrderQuantity"></label>
    <ejs-numerictextbox asp-for="OrderQuantity"
        placeholder="Order quantity"
        min="1"
        max="100"
        step="1"
        float-label-type="Auto"
        css-class="e-outline"
        change="checkInventory">
    </ejs-numerictextbox>
    <small>Available stock: 100 units</small>
</div>

<div class="form-group">
    <label>Unit Price: $25.00</label>
    <ejs-numerictextbox id="totalPrice"
        format="c2"
        read-only="true"
        float-label-type="Auto">
    </ejs-numerictextbox>
</div>

<script>
    document.querySelector('input[asp-for="OrderQuantity"]').addEventListener('change', function(e) {
        var quantity = parseInt(e.target.value) || 0;
        var unitPrice = 25;
        var totalPrice = quantity * unitPrice;
        
        var totalPriceControl = document.querySelector('input[id="totalPrice"]');
        var totalPriceInstance = totalPriceControl.ej2_instances[0];
        totalPriceInstance.value = totalPrice;
    });
</script>
パターン 4:カルチャを使用した国際通貨の選択
<div class="row">
    <div class="col-md-6">
        <div class="form-group">
            <label asp-for="Currency"></label>
            <select asp-for="Currency" id="currencySelect" class="form-control">
                <option value="en-US">USD ($)</option>
                <option value="de-DE">EUR (€)</option>
                <option value="fr-FR">GBP (£)</option>
            </select>
        </div>
    </div>

    <div class="col-md-6">
        <div class="form-group">
            <label asp-for="Amount"></label>
            <ejs-numerictextbox asp-for="Amount"
                placeholder="Enter amount"
                format="c2"
                float-label-type="Auto">
            </ejs-numerictextbox>
        </div>
    </div>
</div>

<script>
    document.getElementById('currencySelect').addEventListener('change', function(e) {
        var culture = e.target.value;
        var amountControl = document.querySelector('input[asp-for="Amount"]');
        var amountInstance = amountControl.ej2_instances[0];
        amountInstance.locale = culture;
    });
</script>

主なプロパティのリファレンス

プロパティ型デフォルト目的
mindecimal-∞許容される最小値
maxdecimal+∞許容される最大値
stepdecimal1スピナーで値を増減する刻み幅
valuedecimalnull初期数値
formatstring"n2"数値形式(c、p、n、e、f)
decimalsint2小数点以下の桁数
placeholderstring-プレースホルダーテキスト
read-onlyboolfalseスピナーを使用可能なまま、手動入力を防止します
disabledboolfalse入力を完全に無効化します
show-spin-buttonbooltrue上下のスピナーボタンを表示します
float-label-typeenumNeverラベルのアニメーション(Auto、Always、Never)
css-classstring-スタイル設定用の CSS クラス
createdstring-NumericTextBox の作成時のイベントハンドラー
changestring-値変更時のイベントハンドラー
blurstring-フォーカスが外れたときのイベントハンドラー

よくあるユースケース

ユースケース 1:財務フォーム(給与計算、請求書発行)

通貨形式と検証機能を備えた給与計算または請求書発行フォームを作成します:

  • 対象: 財務取引フォームを作成する場合
  • リファレンス: range-validation.md + number-formats.md
  • 主な機能: 通貨形式(c2)、最小値/最大値の検証、刻み幅の制御
ユースケース 2:国際 E コマース

ロケールに応じた形式の複数通貨対応ショッピングカートを構築します:

  • 対象: 国際的な販売プラットフォームを作成する場合
  • リファレンス: globalization-localization.md
  • 主な機能: カルチャに基づく形式、複数通貨、ローカライズされたツールチップ
ユースケース 3:制約付きデータ入力フォーム

厳密な数値範囲と精度を備えたデータ入力フォームを作成します:

  • 対象: 在庫管理、アンケート、分析用フォームを構築する場合
  • リファレンス: range-validation.md
  • 主な機能: 最小値/最大値の検証、小数精度、刻み幅
ユースケース 4:科学/工学計算

技術アプリケーション向けに、高精度な数値入力を実装します:

  • 対象: 計算ツールや科学ソフトウェアを構築する場合
  • リファレンス: advanced-patterns.md
  • 主な機能: 高精度の小数、カスタム形式、イベント駆動型の計算

次のステップ:

  1. getting-started.md を確認し、最初の NumericTextBox を設定します
  2. ユースケースを選び、対応するリファレンスガイドに従います
  3. コード例をコピーし、プロジェクトに合わせて調整します
  4. 複雑なシナリオについては、advanced-patterns.md を参照してください

コメント