C# 信号器中未定义的chat.client

C# 信号器中未定义的chat.client,c#,asp.net,asp.net-mvc,asp.net-mvc-4,signalr,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Signalr,我遵循了这一点 但是我正在聊天。客户端未定义 这是我的ChatHub.cs代码 [HubName("ChatHub")] public class ChatHub : Hub { public void Send(string name, string message) { Clients.All.addNewMessageToPage(name, message); } } 还有我的star

我遵循了这一点

但是我正在聊天。客户端未定义

这是我的ChatHub.cs代码

  [HubName("ChatHub")] 
    public class ChatHub : Hub
    {
        public void Send(string name, string message)
        {
            Clients.All.addNewMessageToPage(name, message);
        }
    }
还有我的startupclass.cs

[assembly: OwinStartup(typeof(SignalRChat.Startup))]
namespace SignalRChat
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();

        }
    }
}
在我的聊天视图中

@section scripts {
    <script src="~/Scripts/jquery.signalR-2.2.0.min.js"></script>
    <script src="~/signalr/hubs"></script>
    <script>
        $(function () {
            var chat = $.connection.ChatHub;
            chat.client.addNewMessageToPage = function (name, message) {
                $('#discussion').append('<li><strong>' + htmlEncode(name)
                    + '</strong>: ' + htmlEncode(message) + '</li>');
            };
            $('#displayname').val(prompt('Enter your name:', ''));
            $('#message').focus();
            $.connection.hub.start().done(function () {
                $('#sendmessage').click(function () {
                    chat.server.send($('#displayname').val(), $('#message').val());
                    $('#message').val('').focus();
                });
            });
        });
        function htmlEncode(value) {
            var encodedValue = $('<div />').text(value).html();
            return encodedValue;
        }
    </script>
}

我将从检查脚本

~/Scripts/jquery.signalR-2.2.0.min.js


如果您的方法位于服务器端,则可用

Clients.All.addNewMessageToPage(名称、消息)

您必须在浏览器端写入

chat.client.AddNewMessageToPage = function (name, message) {
            $('#discussion').append('<li><strong>' + htmlEncode(name)
                + '</strong>: ' + htmlEncode(message) + '</li>');
        };
chat.client.AddNewMessageToPage=函数(名称、消息){
$(“#讨论”)。追加(“
  • ”+htmlEncode(名称) +“:”+htmlEncode(消息)+“
  • ”); };

    方法在服务器端addNewMessageToPage中,您必须在浏览器端写入addNewMessageToPage(大A)。

    对于从教程中复制代码并遇到相同错误的任何其他人,您可能需要更改以下内容:

    <script src="signalr/hubs"></script>
    
    
    

    
    
    是。在控制台中,两个都有。我在mylayout视图中包含了Js文件“我在mylayout视图中包含了Js文件”是什么意思?什么Js文件?我猜JQuery是因为所有其他需要的Js文件都已经包含在您的聊天视图(部分)…@MichalLevý:是的。你是对的。我说的是Jquery.jsAs
    client
    是hub客户端代理的属性,我感兴趣的是动态生成的代理文件的确切内容。只需在浏览器中访问
    /signalr/hubs
    ,然后将内容粘贴到问题中,请…您是否可以使用它?我也有一个类似的问题@新手:是的。用这个
    chat.client.AddNewMessageToPage = function (name, message) {
                $('#discussion').append('<li><strong>' + htmlEncode(name)
                    + '</strong>: ' + htmlEncode(message) + '</li>');
            };
    
    <script src="signalr/hubs"></script>
    
    <script src="~/signalr/hubs"></script>