2013-02-10 173 views
0

SignlaR是否自动将从客户端发送的json对象映射到c#对象?如果是这样,我会在这里做错什么?SingalR将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; 
    }; 

回答

2

你似乎是发送一个JSON字符串到应用程序服务器,而服务器期待的对象。

变化:

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

要:

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