blazor - 是否添加可选@?
问题描述
两个版本都有效,但哪个是正确的选择?这个?
<button type="button @onclick="NavigateToHome">
或者这个(注意额外的@)?
<button type="button @onclick="@NavigateToHome">
解决方案
在 Blazor 框架开发的早期阶段,我们必须@
在方法名称前面加上符号,以告诉编译器给定属性的值,例如 onclick 是 C# 可执行代码。
它看起来像这样:onclick="@NavigateToHome"
后来,引入了编译器指令,例如@onclick
编译器指令。
结果,此约束已被删除,您只能像这样使用方法的名称NavigateToHome
:
@onclick="NavigateToHome"
无需告诉编译器这NavigateToHome
是在单击元素时应调用的 C# 方法。
@onclick
编译器指令的引入也对和进行了区分onclick
。下面的代码示例演示了这个想法:
<button type="button" onclick="alert("Alert...");">Click me now</button>
如果您现在单击该按钮,将显示警报窗口。换句话说,JavaScript 被执行。
据我所知,是 Daniel Roth 在 Blazor 的一个预览中说他们不会强制移除该@
标志。换句话说,它是向后兼容的。所以你可以使用这两种结构。出于习惯,我总是使用这个@
标志。有一段时间我试图教自己不要使用它,但为时已晚。由于您是 Blazor 新手,因此最好不要@
从一开始就使用该标志。
但是请注意,该@
符号必须与 lambda 表达式一起使用,例如:@onclick="@( (args) => NavigateToHome(args))"
重要的是要记住这@onclick
是一个编译器指令,指示编译器创建用于调用“NavigateToHome”方法的管道。
但是如果你使用一个value
属性,例如:
<input type="text' value="@<property-name>"
属性名称必须始终以@
符号开头,该符号指示编译器创建管道以调用方法(可执行 C# 代码)。如果不这样做,将导致 value 属性被设置为属性标识符的字符串值。
推荐阅读
- python - python电报机器人中的作业队列问题
- python - 如何限制特定 python 脚本的 postgres 的 IO?
- c# - 如何检查一个任务是否完成并开始下一个?
- reactjs - 反应js,当打开页面时在新标签中显示404以外的主页
- ruby-on-rails - 回形针附件迁移不起作用
- powershell - 为什么在powershell中管道的wmic输出不同?如何纠正?
- java - 无法运行我的项目 - java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: 无法启动组件
- php - Laravel以多对多的方式插入数据并出现错误
- reactjs - 将子组件传递给 API 组件
- c# - Unity C# Dragged item 将自身定位在鼠标运动上方几厘米处