0

SignlaR は、クライアントから送信された json オブジェクトを c# オブジェクトに自動的にマップしますか? もしそうなら、私はここで何が間違っているのでしょうか?

C# オブジェクト

 public class ChatHub :Hub
    {
        public void broadcastMessage(CommentModel model)
        {
            string test = model.Comment;
            // Clients.All.writeMessage(jsonString);
        }


        public class CommentModel
        {
            [Required]
            public string Name { get; set; }

            [Required]
            public string Comment { get; set; }

            [Required]
            public string EmailAddress { get; set; }
        }
    }

JavaScript

$(document).ready(function () {

        var chat = $.connection.chatHub;
        chat.client.writeMessage = function (t) {
            var name = t.Name;
            var email = t.Email;
            var id = t.id;
            var text = name + " " + email + " " + id + " ";
            $("#test").append(text);
        }

        $("form").submit(function (e) {

            var jsonObject = JSON.stringify($(this).serializeObject());
            chat.server.broadcastMessage(jsonObject);
            e.preventDefault();
        });

        $.connection.hub.start();
    });

    $.fn.serializeObject = function () {
        var o = {};
        var a = this.serializeArray();
        $.each(a, function () {
            if (o[this.name] !== undefined) {
                if (!o[this.name].push) {
                    o[this.name] = [o[this.name]];
                }
                o[this.name].push(this.value || '');
            } else {
                o[this.name] = this.value || '';
            }
        });
        return o;
    };
4

1 に答える 1

2

サーバーがオブジェクトを期待しているのに、アプリサーバーにJson文字列を送信しているようです。

変化する:

var jsonObject = JSON.stringify($(this).serializeObject());

に:

var jsonObject = $(this).serializeObject();
于 2013-02-10T01:19:42.900 に答える