【问题标题】:Modelbinding multiple properties SignalR模型绑定多个属性 SignalR
【发布时间】:2021-06-21 17:06:33
【问题描述】:

我一直在一个新项目中试用 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 数组是否存在问题,但不是。最后我想知道我的调用中是否有错字,所以我将参数更改为一个字符串并且成功绑定。

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

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

【问题讨论】:

    标签: c# asp.net .net websocket signalr


    【解决方案1】:

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

    【讨论】:

    • 您好,感谢您的回复。是的,因为我尝试将我的方法更改为只接收一个字符串参数,然后向它发送一个字符串,它接收到该字符串,但是当我尝试像这样发送多个参数时,它不起作用。
    • 你能激活并发布服务器日志(docs.microsoft.com/en-us/aspnet/core/signalr/…)吗?客户说/抛出什么?是Error: Failed to invoke 'submitAnswer' due to an error on the server. InvalidDataException: Error binding arguments. Make sure that the types of the provided values match the types of the hub method being invoked.吗? (在您的 Startup.cs 中启用此 services.AddSignalR(o => { o.EnableDetailedErrors = true; });
    【解决方案2】:

    我终于明白了……

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      相关资源
      最近更新 更多