将类似JSON的字符串从C#发送到javascript

将类似JSON的字符串从C#发送到javascript,c#,javascript,string,object,C#,Javascript,String,Object,我在JavaScript中有如下代码: slider.setPhotos([ { "src": "image1", "name": "n1" }, { "src": "image2", "name": "n2" }, { "src": "image3", "name": "n3" } ]); 我想从C#设置src和name的值 假设值与C#中的值类似: 如何将这些值设置为JavaScriptcode(即C#code中的页面加载方法)?在服务器上,您需要将数据序列

我在
JavaScript
中有如下代码:

slider.setPhotos([
    { "src": "image1", "name": "n1" },
    { "src": "image2", "name": "n2" },
    { "src": "image3", "name": "n3" }
    ]);
我想从
C#
设置
src
name
的值

假设值与
C#
中的值类似:


如何将这些值设置为
JavaScript
code(即C#code中的页面加载方法)?

在服务器上,您需要将数据序列化为JSON,然后可以使用类似于隐藏输入字段的内容将其作为HTML写入响应

例如,您可以使用JSON库来序列化JSON(它内置在中,但是使用Nuget很容易安装)

然后将json呈现到HTML中(有很多方法可以做到这一点) e、 g

或者甚至直接作为脚本编写,而不需要在客户端进行解析(我仍然倾向于使用HTML方法来避免回发/更新面板导致脚本多次执行的任何问题)


然后您可以作为Javascript对象访问数据。

假设
图像
名称
长度相同 你可以用这个

StringBuilder str = new StringBuilder();

var images = new string[] {"/images/a1.jpg", "/images/a2.jpg", "/images/a3.jpg"};
var names = new string[] {"First", "Second", "Third"};

str.AppendLine("slider.setPhotos([");
for(int i=0; i< images.Length; i++)
{
   str.AppendLine("{ \"src\": "+ images[i] +", \"name\": "+ names[i] +" }");
   str.AppendLine( (i==images.Length-1 ? "]);":","));
}

Page.ClientScript.RegisterClientScriptBlock(
               this.GetType(), "Key007", str.ToString(), true);
StringBuilder str=new StringBuilder();
var images=newstring[]{“/images/a1.jpg”、“/images/a2.jpg”、“/images/a3.jpg”};
变量名称=新字符串[]{“第一”、“第二”、“第三”};
str.AppendLine(“slider.setPhotos([”);
对于(int i=0;i

此代码将在加载页面时插入一个脚本块,之后您可以在客户端代码中的任何位置使用该脚本块。

简单地使用ajax来获取该脚本块如何?您甚至可以生成一个定义数据的脚本标记,而不必担心获取元素或解析它。@Rawling,没错,我的答案就是这个方法。Tnx@ChrisHerring。回答得很好。
string json = Newtonsoft.Json.JsonConvert.SerializeObject(images);
Response.Write(string.Concat("<input id='data' type='hidden' value='", json, "' />");
HiddenField jsonField = new HiddenField
{
    ID = "data"
};
jsonField.Value = json;
this.Controls.Add(jsonField);
Response.Write(string.Concat("<script type='text/javascript'> var images = ", json, ";</script>");
var field = document.getElenentById('data');
var images = JSON.parse(field.value);
StringBuilder str = new StringBuilder();

var images = new string[] {"/images/a1.jpg", "/images/a2.jpg", "/images/a3.jpg"};
var names = new string[] {"First", "Second", "Third"};

str.AppendLine("slider.setPhotos([");
for(int i=0; i< images.Length; i++)
{
   str.AppendLine("{ \"src\": "+ images[i] +", \"name\": "+ names[i] +" }");
   str.AppendLine( (i==images.Length-1 ? "]);":","));
}

Page.ClientScript.RegisterClientScriptBlock(
               this.GetType(), "Key007", str.ToString(), true);