我正在使用Blazor进行一些测试,想要获取一个字符串并将其更改为大写,如下所示:
@page "/InputBindingTest"
<h1>Binding examples...</h1>
<hr />
<h2>Text input example:</h2>
<p>Firing the 'oninput' event for each key press</p>
<input type="text" bind-value-oninput="@CurrentText" />
<p>Current value is: @CurrentText</p>
<p>Here it is again in UPPERCASE: @CurrentText.ToUpper()</p>
<h2>Checkbox example:</h2>
<input name="check1" type="checkbox" bind-value-onchange="@CurrentSetting" />
<label for="check1">@CurrentSetting</label>
@functions {
private string CurrentText { get; set; }
private bool CurrentSetting { get; set; }
}
除字符串上的ToUpper方法外,其他所有方法均有效。 Web Assembly令人讨厌:
WASM:未处理的异常呈现组件
我想这还不能完成,还是我做错了什么?
答案 0 :(得分:4)
仔细查看生成的错误跟踪,发现这与空引用异常有关。
简单的解决方法是?.
:
<p>Here it is again in UPPERCASE: @CurrentText?.ToUpper()</p>
和/或
private string CurrentText { get; set; } = "";
Blazor的绑定可以很好地处理null
中的@CurrentText</p>
。
但是ToUpper()
不能在空字符串上调用。
答案 1 :(得分:0)
尝试这样的事情:
versedisplayrow.xml
注意:还有其他方法可以完成此任务,例如创建事件处理程序以将输入文本的值更改为大写。在所有情况下,都应该像上面一样将输入更改为大写,然后更新support属性。请注意,我不会像您一样在支持属性上调用ToUpper方法(<input type="text" bind="@CurrentText" />
<p>Current value is: @CurrentText</p>
string _value;
public string CurrentText
{
get => _value;
set { _value = value.ToUpper(); }
}
),而是在后备变量上调用ToUpper方法。
希望这对您有帮助...