JSON.NET 属性作为 Javascript 函数

JSON.NET Property as Javascript Function

我有一个像这样的 C#class

public class Person
{
  string firstname {get; set;}
  string lastname {get; set;}
  string onRenderFunction {get; set;}
}

然后我这样设置 class:

var superman = new Person
{ 
    firstname = "Clark",
    lastname = "Kent",
    onRenderFunction = "renderPersonComplete"
}

我想要的是将 "onRenderFunction" 序列化为方法 - 而不是字符串。像这样;

{ 
  "firstname": "Clark",
  "lastname": "Kent",
  "onRenderFunction": renderPersonComplete
}

因此,当通过 Ajax 调用返回序列化对象并将其提供给能够调用函数 "onRenderFunction" 的插件时,插件会看到函数已设置并调用函数设置如下:

var renderPersonComplete = function() {
   alert('do something on render complete');
};

我如何设置 JSON.NET 序列化 Person class 来执行此操作?

你必须做一些额外的处理才能将函数分配给 属性 因为 JSON 根据定义只是基元的键值对,它不知道函数。

所以最初来自 ajax 的数据将如下所示:

var data = { 
  "firstname": "Clark",
  "lastname": "Kent",
  "onRenderFunction": "renderPersonComplete"
}

假设您在 window 的范围内有一个名为 renderPersonComplete 的函数:

window.renderPersonComplete = function() {
   alert('do something on render complete');
};

现在您必须修改数据以分配函数:

data.onRenderFunction = window[data.onRenderFunction] // This assigns the function to onRenderFunction  property.

函数的名称由服务器端根据您的逻辑决定。