【问题标题】:JavaScript - Pass data from C# code [duplicate]JavaScript - 从 C# 代码传递数据 [重复]
【发布时间】:2017-07-19 07:50:07
【问题描述】:

我想将数据从我的代码隐藏文件 (C#) 传递给 javascript 代码,而我想要在 javascript 端的内容类似于以下内容

var data = [
    { 
        "date": "24-Apr-07", 
        "close": 93.24 
    }, 
    { 
        "date": "25-Apr-07", 
        "close": 95.35 
    }, 
    { 
        "date": "26-Apr-07", 
        "close": 98.84 
    }
];

我尝试将其作为字符串传递,但失败了,因为它仅将整个内容视为字符串。

还有其他选择吗?

【问题讨论】:

  • 您使用的是什么网络框架?经典的 ASP? ASP MVC?
  • asp.net 网络表单

标签: javascript c#


【解决方案1】:

您可以尝试使用http://www.newtonsoft.com/json

Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Sizes = new string[] { "Small" };

string json = JsonConvert.SerializeObject(product);
// {
//   "Name": "Apple",
//   "Expiry": "2008-12-28T00:00:00",
//   "Sizes": [
//     "Small"
//   ]
// }

在你的 JS 中你可以用这种方式反序列化它:

var des_obj = JSON.parse( json_string );

【讨论】:

【解决方案2】:

你可以通过 Ajax 调用来做到这一点..

在 Javascript 方面:

$.ajax({
        type: "POST",
        url: "Default.aspx/GetData",
        data: dataValue,                
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown);
        },
        success: function (result) {
            alert("We returned: " + result);
        }
    });

在代码后面:

[WebMethod]
public static string GetData()
{
   // return your data
} 

当您从 GetData() 返回对象时,它会自动序列化数据。你也可以使用return JsonConvert.SerializeObject(obj);

【讨论】:

    【解决方案3】:

    是的,您可以使用JsonConvert Class

    在 C# 代码后面:

    C# 模型类:

    public class RootObject
        {
            public string date { get; set; }
            public double close { get; set; }
        }
    

    通过给C#这样的对象创建一个返回json的方法:

    public class JSONConverter
        {
            public string Convert(List<RootObject> list)
            {
                return JsonConvert.SerializeObject(list);
            }
        }
    

    在您的 ActionMethod 中:

    public void ActionResult()
    {
    
         List<RootObject> list = repo.GetList(); // i assumed that you get list 
         //from repo
        ViewBag.modelList = JsonConverter.Convert(list);
        return View()
    }
    

    毕竟在 C# 视图中:(注意:我假设您正在使用 Razor 视图引擎)

    <script>
    var data = @ViewBag.modelList
    <script>
    

    您的 json 序列化 c# 数组可以分配给data

    【讨论】:

    • 问题是关于 ASP.NET Web 表单应用程序而不是 MVC
    【解决方案4】:

    如果您在 javascript 端获取字符串,您只需将字符串包装在 JSON.parse() 中即可获取数据。

    var data =  JSON.parse('[
        {
            "date": "24-Apr-07",
            "close": 93.24
        }, {
            "date": "25-Apr-07",
            "close": 95.35
        }, {
            "date": "26-Apr-07",
            "close": 98.84
        }
    ]');
    

    【讨论】:

      猜你喜欢
      • 2017-10-31
      • 1970-01-01
      • 2011-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-13
      • 2012-03-28
      相关资源
      最近更新 更多