代码之家  ›  专栏  ›  技术社区  ›  Chris Farmer Marcelo Cantos

如何最好地在.NET服务器代码和JavaScript客户端代码之间共享逻辑类型?

  •  0
  • Chris Farmer Marcelo Cantos  · 技术社区  · 15 年前

    我有一个使用jquery的ASP.NET MVC服务器应用程序和客户端代码。我想使用Ajax将对象从客户机传输到服务器,然后再传输回来。在服务器上,我基本上只是在验证和序列化它们。在客户机上,我有一些用于创建可视表示的UI代码,以及一些用于管理某些对象属性的其他代码。

    我的问题是:什么是最好的方法来整理这些对象?我目前的想法只是从我的控制器操作返回一个包装为JSONresult的对象,但是我不确定在客户机上完成一个对象的工作后,将它传递回MVC世界的最佳方法。我可以构建一个JSON字符串,并将其作为控制器操作的字符串参数传回MVC,在这里我必须手动将JSON解包成.NET类型。有没有一种方法可以更自动地映射到.NET类型,或者其他一些“方便”机制可以帮助防止这里的错误(即使我必须编写方便机制)?

    这看起来非常类似于ModelBinder的想法,也许我只是被这样的想法所抛弃:我打算使用jquery将JSON推回到服务器上,而不是使用“常规”表单发布。我可以在某种程度上使用ModelBinder将我的客户机提供的JSON转换为.NET端的快乐模型类型吗?

    1 回复  |  直到 15 年前
        1
  •  4
  •   Praveen Angyan    15 年前

    您不必手动将JSON解包为.NET类型。你有各种各样的图书馆为你做这些。我个人更喜欢 JSON.NET . 你要做的就是这样:

    var deserializedObject = JsonConvert.DeserializeObject<ObjectType>(json);
    

    如果不希望依赖第三方库,只需使用Microsoft的JavaScriptSerializer:

    var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
    var deserializedObject = serializer.Deserialize<ObjectType>(json);
    

    Microsoft's documentation for JavaScriptSerializer