Json参数转换继承Web API 2 - javascript

我正在使用MS Web API 2使用ajax从我们的网页接收呼叫。
然后,我有2个类:Subscriber和externalSubscriber。订户包含非常基本的数据,例如名称和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', ....}

之后,我可以将传入的订阅服务器强制转换为ExternalSubscriber并访问其属性。

重复使用Google Api Bearer令牌来访问用户的云端硬盘 - javascript

我有以下几点: gapi.auth.authorize( { client_id: CLIENT_ID, scope: SCOPES, immediate: false }, handleAuthResult); 这使我可以访问access_token:目标是使该应用程序的用户可以授予对我的应用程序的访问权限,以使用其Google驱动器存储其内容。我需要能够…

从Javascript调用PUT方法 - javascript

我正在尝试从javascript调用C#Web API,但数据似乎传递不正确。我使用的GET方法工作得很好,但是我似乎无法按预期的那样使PUT工作。结构如下:Javascript:$.ajax({ type: "PUT", url: "/api/FTP", data: "Hello World" }…

在Google云端硬盘中生成第三方应用文件预览的最佳方法? - javascript

Google云端硬盘小组最近宣布,第三方云端硬盘应用可以提供自己的缩略图作为文件预览(http://googleappsdeveloper.blogspot.com/2012/10/thumbnails-for-your-custom-file-types.html)。对您来说最简单的方法是什么?我们的应用程序在前端使用AngularJS,在后端使用Pyth…

PHP应用程序,显示用户有多少个Facebook通知 - javascript

我正在为基于Chromium的应用程序创建接口,但遇到了问题。我想直接在我的网站上显示我的Facebook通知数量(这些白色数字在红色矩形中)。可能吗?我在Google上找不到任何东西。它看起来应该像:Patrick有5条新通知。编辑:现在我有了这个:$request = new FacebookRequest( $session, 'GET�…

javascript popupwindow之后的行如何工作? - javascript

好的,我有一个来自后面代码的方法,可以创建一个popupwindow。然后有一行代码要在那之后执行,我想知道那行代码何时执行,是在使用popupwindow之后执行还是在创建popupwindow之后执行?例如:void exPopupWindowMethod() { string scr = "window.open('exampleP…