Обратите внимание, что вы привязываете значение @bind-Value="card.Number"
вместо @bind-value:oninput
. Директива @bind-Value
связывает значение при изменении значения (т. Е. Событие onchange
). И событие oninput
срабатывает до onchange
: когда срабатывает первое событие нажатия клавиши, card.Number
равно null
, потому что @onchange
событие еще не пришло.
Чтобы исправить эту проблему, вам нужно запретить card.Number
is null
при проверке card.Number.Length == 4
в противном случае он выдаст System.NullReferenceException
, когда сработает первое событие нажатия клавиши:
private void FormatCreditCardNumber()
{
<strike>if (card.Number.Length == 4)</strike>
<b>if (card.Number?.Length == 4)</b>
{
numberFormat = String.Empty;
numberFormat = card.Number + "-";
}
}