在我的 Blazor 应用程序中,我在视图中有以下输入字段:
<input bind="@amount.Display" type="text" />
这绑定到使用以下访问器定义的属性:
get
{
return _display;
}
set
{
var parsed = Decimal.Parse(value);
_display = parsed.ToString("F2");
}
真正的访问器逻辑比这更复杂,但我已经在上面尽可能地简化了它,同时仍然保留了让我感到困惑的行为。
基本上,当用户输入“2”,然后制表符或点击输入字段时,我希望它自动转换为“2.00”。奇怪的是,这种转换似乎只有在用户输入的字符串表示的数字与已有的数字不同时才会发生。例如,如果输入字段当前的值为“1.00”并且我输入“2”,我正确地以“2.00”结束。但是,如果输入字段的值为“2.00”并且我输入“2”,则它仍然是“2”。就好像在后一种情况下没有调用 set 访问器,我无法想象为什么。