首页 > 解决方案 > 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));
  };

标签: javascriptc#asp.net-core.net-coreblazor

解决方案


DotNet.InvokeMethod 会将您在 WASM 控制台日志中看到的 JSON 字符串发送到 Blazor .razor 页面中的 JSInvokable 方法。

要在 blazor 页面中反序列化它,请使用

[JSInvokable]
public static void SetPlayerState(string msg)
{
    var deserialized = Microsoft.JSInterop.Json.Deserialize<myobject>(msg);
}

推荐阅读