Razor中OnClick传字符串报错:too many characters in character literal
错误原因
你在MudIconButton的OnClick属性绑定中,用双引号嵌套包裹字符串参数,导致HTML语法解析冲突。编译器误将"InProgress"识别为字符字面量(字符字面量要求单个字符,用单引号),因此抛出too many characters in character literal错误。
修复方案
有两种可行的修复方式,推荐第二种更符合Blazor开发习惯的写法:
方式1:替换内部字符串的双引号为单引号
保持外层HTML属性的双引号,将参数里的双引号改成单引号,避免嵌套冲突:
<MudIconButton Icon="@Icons.Material.Filled.SwipeRight" Variant="Variant.Outlined" Color="Color.Primary" Size="Size.Small" OnClick="()=>TaskComplete(task,'InProgress')"/>
方式2:使用Blazor代码绑定语法(推荐)
在OnClick前加上@,将其作为C#代码块绑定,这样内部可以正常使用双引号,无需转义:
<MudIconButton Icon="@Icons.Material.Filled.SwipeRight" Variant="Variant.Outlined" Color="Color.Primary" Size="Size.Small" @OnClick="() => TaskComplete(task, "InProgress")"/>
另外注意你的方法参数里的Setask应该是拼写错误,建议检查是否为Task或自定义的实体类名称,避免后续出现其他编译错误。
内容的提问来源于stack exchange,提问作者Venkat
相关产品推荐
相关产品推荐

