模型绑定多个属性 SignalR

Modelbinding multiple properties SignalR

我一直在一个新项目中试用 SignalR,但在模型绑定方面我 运行 遇到了问题。

我的 Javascript 中心:

state.socket?.invoke(SocketInvoke.submitAnswer, 1, 2, 3, [4,5,6]);

我的方法:

public async Task SubmitAnswer(int gameId, int quizId, int questionId, int[] optionIds)

但这似乎不起作用。我尝试将其更改为:

 const answer = {
            GameId: 1,
            QuizId: 2,
            QuestionId: 3,
            OptionIds: [4,5,6]
        }
state.socket?.invoke(SocketInvoke.submitAnswer, answer);

public async Task SubmitAnswer(SubmittedAnswerViewModel answer)

public class SubmittedAnswerViewModel
{
 public int GameId { get; set; }
 public int QuizId { get; set; }
 public int QuestionId { get; set; }
 public int[] OptionIds { get; set; }
     
}

我还尝试将 OptionIds 更改为 List,并将其转换为 int 以查看 int 数组是否是问题所在,但事实并非如此。最后我想知道我的调用中是否有错字,所以我将参数更改为一个字符串并成功绑定。

有谁知道为什么这不会绑定?我觉得答案可能很明显,但我就是看不到。

感谢阅读,感谢您的帮助。

您确定 SocketInvoke.submitAnswer returns 字符串“submitAnswer”吗? 当我用这个例子尝试时,你的代码有效:https://docs.microsoft.com/en-us/aspnet/core/tutorials/signalr?view=aspnetcore-5.0&tabs=visual-studio#add-signalr-client-code

我终于想通了...

我在方法内部执行 Task.Delay(),有效地让我的挂钩挂起并等待响应。我认为这是确保在正确的时间准确发送问题的好方法,并且更难修改时间限制等。

回想起来这似乎很明显,但我才发现这是因为我在谷歌搜索解决方案时留下了一个断点,我的 VSC 突然开始闪烁。