加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 09:47:30 所属栏目:asp.Net 来源:网络整理
导读:我有一个类似 JSON的数据结构(我不想改变),当前由.aspx文件吐出javascript生成.看起来.NET在午餐时吃了jQuery,然后呕吐…… 我想将整个事情重写为一个返回JsonResult的MVC控制器动作,基本上是通过构建一个匿名对象并传递它来返回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直接写入响应而不使用双引号.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读