我正在使用 MS Web API 2 通过 ajax 接收来 self 们网页的调用。 然后我有 2 个类:订阅者和外部订阅者。订阅者包含非常基本的数据,例如名称和 ID。外部订阅者继承自订阅者并添加地址和电子邮件等基本数据。我有一种 api 方法来编辑订阅者的数据,定义如下:
public IHttpActionResult PutSubscriber(int id, Subscriber subscriber)
在我们的页面中,我使用提供的数据创建一个 json 字符串,这导致它成为外部订阅者或普通订阅者。 我可以使用这两种方法发布到此函数,但使用 externalSubscriber 对象时,添加的数据会丢失,并且尝试从订阅者进行转换会导致错误。
我的问题是,是否有人对这个问题有任何经验,除了创建一个用于放置外部订阅者的特定函数之外,是否还有其他方法可以解决这个问题。
最佳答案
我已经使用以下页面上提供的信息使其正常工作: http://www.newtonsoft.com/json/help/html/SerializeTypeNameHandling.htm Polymorphism in Web API: Single endpoint possible?
首先我设置 json 设置:
jsonsettings.SerializerSettings.TypeNameHandling = TypeNameHandling.Auto;
然后在使用 ajax 发送之前设置 json 对象的类型
jsonObject { '$type' : .Models.ExternalSubscriber, solution.project', ....}
此后,我可以将传入的订阅者转换为外部订阅者并访问其属性。
关于javascript - Json参数转换继承Web api 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28961717/