javascript - DotNet.invokeMethod在c#方法中传递的是什么类型的对象?
问题描述
我正在使用 Blazor(3.0.0-preview4) 并尝试通过DotNet.invokeMethod
. 我以这种方式进行了测试,它成功地传递了简单的类型(字符串,int)。但是如果我传递 JS 对象,我会得到奇怪的对象类型,
我可以将它写入 Console.WriteLine,它看起来像 JSON,但不是字符串。
所以我不能用这个做任何事情,我什至无法解析它,也没有关于 Microsoft 的 SimpleJson 程序集的信息。我该如何处理这种类型?
提前致谢。
代码示例 Blazor:
[JSInvokable]
public static void SetPlayerState(object[] args)
{
Console.WriteLine(args[0]);
Console.WriteLine(args[0].GetType().Name);
}
JS:
window.cInvoke = (methodName, json) => {
DotNet.invokeMethod("ui", methodName, JSON.parse(json));
};
解决方案
DotNet.InvokeMethod 会将您在 WASM 控制台日志中看到的 JSON 字符串发送到 Blazor .razor 页面中的 JSInvokable 方法。
要在 blazor 页面中反序列化它,请使用
[JSInvokable]
public static void SetPlayerState(string msg)
{
var deserialized = Microsoft.JSInterop.Json.Deserialize<myobject>(msg);
}
推荐阅读
- flutter - 请我在运行我的颤振模拟器时遇到问题
- office-js - ooxml 方法及其传递参数
- visual-studio-code - 为什么 Visual Studio Code 设置不适用
- laravel - 单元测试 Laravel 7 Passport Scope 问题在 1 个测试用例中检索错误的用户护照
- python - 如何通过 id 选择 HTML 元素,它是美丽汤中的数字
- javascript - 打字稿 axios 打字
- node.js - Mongoose/Express 多个条件搜索条件
- security - 检测到弱密码套件:服务器支持易受攻击的密码套件
- bash - 比较shell脚本中前n个字符的两个文件名
- r - 在不加载数据的情况下检查 ftp 中的文件是否存在