繁体   English   中英

如何在 Blazor Web 程序集中将 c# 变量传递给 javascript

[英]How to Pass a c# variable to javascript in Blazor Web Assembly

我正在使用 Blazor Web 程序集,第 3 方组件不支持 @onitnput、@bind-value:event="oninput"。 为了尝试解决这个问题,我尝试使用 JS 来触发 c# function。(我还有其他的东西在输入时触发“onchange”,所以当你看我的例子时,只要把它想象成 oninput,这是有效的).

主要问题:我需要将对页面的引用传递给 onchange 调用的方法,这样我就可以从 JS 调用 c# 方法,但我无法让它传递参数。 这是我的标记

<RadzenHtmlEditor @bind-Value=@SurveyScriptNode.Script onchange="callCSharpMethodNoParams(@DotNetObjectReference.Create(this))" style="height: 500px; margin-bottom: 1rem; opacity: 1;" UploadUrl="upload/image" Paste=@OnPaste Execute=@OnExecute id="scriptBuilder_surveyScriptNode_ScriptEditor">

我也尝试了这里的建议,但也无法正常工作

<RadzenHtmlEditor @bind-Value=@SurveyScriptNode.Script onchange="callCSharpMethodNoParams(<%=DotNetObjectReference.Create(this)%>)" style="height: 500px; margin-bottom: 1rem; opacity: 1;" UploadUrl="upload/image" Paste=@OnPaste Execute=@OnExecute id="scriptBuilder_surveyScriptNode_ScriptEditor">

Blazor有没有办法做到这一点?

感谢您的时间。

作为解决方法,我正在这样做:

  • 隐藏复选框

  • 在所需的控件上设置一个 js oninput 方法,这将调用一个 js function 将隐藏的复选框设置为 true

  • 由于隐藏复选框在JS更新值时不能@bind,调用StateHasChanged()时也不会更新值,所以需要实现一个计时器,利用JS interop调用一个js function返回隐藏复选框的值框到您的 c# 代码。

  • 将c#变量的值设置为上一步的返回值

  • 在 c# 中创建另一个方法,该方法使用 JS Interop 调用您在输入中使用的 js function,在 c# 变量的设置器中调用此方法,但确保仅在页面已初始化时执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM