Blazor修改字符串(toUpper)失败

时间:2019-06-01 04:05:02

标签: webassembly blazor

我正在使用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:未处理的异常呈现组件

我想这还不能完成,还是我做错了什么?

2 个答案:

答案 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方法。

希望这对您有帮助...