Blazor中如何在onclick函数中传递字符串字面量?
Blazor中给@onclick事件传递参数的正确写法
你遇到的问题是HTML属性的引号冲突导致的,直接在@onclick属性里写带双引号的参数会破坏HTML的引号结构,以下是两种可行的解决方法:
方法一:Lambda表达式+引号嵌套
通过Lambda表达式包裹调用逻辑,同时调整引号的使用避免冲突:
<!-- HTML属性用单引号,内部参数用双引号 --> <MudPaper Class="d-flex flex-row pt-6 pb-4" Style="height:100px;" @onclick='() => View("someurl")'> </MudPaper> <!-- 或者HTML属性用双引号,内部参数用单引号 --> <MudPaper Class="d-flex flex-row pt-6 pb-4" Style="height:100px;" @onclick="() => View('someurl')"> </MudPaper> @code { [Inject] private NavigationManager NavManager { get; set; } private async Task View(string url) { NavManager.NavigateTo("/" + url); } }
方法二:拆分事件处理(适合复杂场景)
如果需要更清晰的代码结构,可以拆分事件触发和参数传递逻辑:
<MudPaper Class="d-flex flex-row pt-6 pb-4" Style="height:100px;" @onclick="HandleViewClick"> </MudPaper> @code { [Inject] private NavigationManager NavManager { get; set; } private async Task HandleViewClick() { await View("someurl"); } private async Task View(string url) { NavManager.NavigateTo("/" + url); } }
原写法报错原因
原代码中@onclick="View("someurl")"的双引号嵌套导致HTML解析错误:浏览器会把@onclick="View("识别为属性值的结束,后续的someurl")"会被当作无效的HTML内容,从而引发语法错误。
内容的提问来源于stack exchange,提问作者Venkat
相关产品推荐
相关产品推荐

