asp.net-mvc – 从ASP.NET MVC返回包含javascript函数的JSON

我有一个类似
JSON的数据结构(我不想改变),当前由.aspx文件吐出javascript生成.看起来.NET在午餐时吃了jQuery,然后呕吐……

我想将整个事情重写为一个返回JsonResult的MVC控制器动作,基本上是通过构建一个匿名对象并传递它来返回Json(数据).

但是,当我想构建的JSON对象的某些属性实际上是JavaScript函数时,我无法弄清楚如何构造C#对象.我怎么做?

例:

我想创建以下类似JSON的对象:

{
    id: 55, 
    name: 'john smith', 
    age: 32,
    dostuff: aPredefinedFunctionHandle,
    isOlderThan: function(other) { return age > other.age } 
}

您看到我希望能够为我在其他地方定义的JavaScript函数指定两个函数句柄(通常在.js文件中),并且我想要定义新的内联函数.

我知道如何在C#中构建该对象的一部分:

var data = new { id = 55, name = "john smith", age = 32 };
return Json(data);

还有什么好方法可以做其余的吗?

最佳答案 .NET中没有内置类型映射到javascript函数.因此,您可能必须创建表示函数的自定义类型,并且您必须自己进行序列化.

像这样的东西……

public class JsFunction
{
   public string FunctionString{get; set;}
}

new
{
    id = 55, 
    name = 'john smith', 
    age = 32,
    dostuff = new JsFunction{ FunctionString = "aPredefinedFunctionHandle" },
    isOlderThan = new JsFunction{ FunctionString = "function(other) { return age > 
                    other.age" } 
}

在序列化时,您可能必须检查值的类型并将FunctionString直接写入响应而不使用双引号.

点赞