为JsonResult MVC将JS函数序列化为JSON

时间:2014-08-14 19:14:23

标签: c# asp.net-mvc json slickgrid

我正在为SlickGrid写一个后端。我有一个AJAX调用,从我的MVC控制器加载列定义。控制器如下所示:

Public ActionResult GetColumns(...){
    List<object> columns;
    foreach(var col in MyColumns){
        columns.Add(new { id = col.id, name = col.name, width = col.width});
    }
    return Json(new { columns = columns });
}

slickgrid接受的一个列属性是formatter,它接受一个js函数名。

不幸的是,MVC将该名称放在双引号中。我需要弄清楚是否有一种方法可以在没有引号的情况下序列化那个字段。

例如(这就是我想要的)

[{"id":1,"Name":"FirstName","width":50,"formatter":NameFormater},...]

vs(这就是我现在得到的)

[{"id":1,"Name":"FirstName","width":50,"formatter":"NameFormater"},...]

我知道这不是适当的JSON格式来传递JS代码(尽管是正确的JS格式)。但我在这里有一个有效的用例,我试图不要添加太多的复杂性。

1 个答案:

答案 0 :(得分:1)

您可以使用特殊字符(如

)包装NameFormater一词
[{"id":1,"Name":"FirstName","width":50,"formatter":"#NameFormater#"},...]

当你得到你的结果时,如果你使用的是javascript

 function(result){

    result = result .replace(/"#/g, "");
    result = result .replace(/#"/g, "");


// result now =  [{"id":1,"Name":"FirstName","width":50,"formatter":NameFormater},...]
//    ...Pass result to SlickGrid

    }