将ASP.NET C#代码隐藏中的2D数组解析为Javascript

将ASP.NET C#代码隐藏中的2D数组解析为Javascript,javascript,c#,jquery,asp.net,webforms,Javascript,C#,Jquery,Asp.net,Webforms,我已经编写了一个函数(addCalendarEvents),它接收一个数组(events)并解析为一个自定义日历。当它通过document.ready函数、事件正在注册等触发时,一切都非常正常 Javascript $(document).ready(function () { loadCalendar(null); addCalendarEvents([{ title: 'All Day Event', start: '2016-01-01' }, { title: 'Long

我已经编写了一个函数(addCalendarEvents),它接收一个数组(events)并解析为一个自定义日历。当它通过document.ready函数、事件正在注册等触发时,一切都非常正常

Javascript

$(document).ready(function () {
    loadCalendar(null);
    addCalendarEvents([{ title: 'All Day Event', start: '2016-01-01' }, { title: 'Long Events', start: '2016-01-07', end: '2016-01-10' }]);     
});

function addCalendarEvents(events) {
    $('#calendar').fullCalendar('addEventSource', events)
}
但是,我还需要通过代码启动它们,以便动态添加事件。我尝试过使用ScriptManager的RegisterStartupScript,但它不起作用。有没有合适的方法让我这样做

C#代码隐藏

protected void Page_Load(object sender, EventArgs e) 
{
    ScriptManager.RegisterStartupScript(this, this.GetType(), "addEvents", "addCalendarEvents([{ title: 'Other Event', start: '2016-01-01' }, { title: 'Other Long Events', start: '2016-01-07', end: '2016-01-10' }]);", true);
}

在添加脚本时尝试将数据转换为json。添加程序集

using this Assembly
using System.Web.Script.Serialization;
然后反序列化对象

var json = new JavaScriptSerializer().Serialize(obj);
然后调用registerStartupScript

ScriptManager.RegisterStartupScript(this, this.GetType(), "addEvents", json, true);
在客户端,将其转换为json

var obj = JSON.parse(string);

使用包含
$(document.ready()
函数的
控件来插入页面加载调用可能更简单

您可以将语句写入
Page\u Load
事件中的literal控件,当页面准备就绪时,客户端应该执行这些语句



不能只在document.ready()函数中放置一个aspx控件。你建议他们怎么做?无可否认,我已经有一段时间没有使用asp.net控件了,但我确实记得将整个标记(包括
和document.ready函数)写入asp文本。您可能需要做一些奇怪的事情,比如分解“”标记,以使其允许它。这个老问题也有类似的作用:我用一个简单的例子修改了我的答案。我在本地测试了它,它在页面加载时执行语句。希望有帮助@谢谢,你的方法很有效。我尝试在文本控件上方初始化日历,然后在文本控件中添加事件,但没有成功。我又试了一次,这次在文本控件中初始化和添加事件,效果很好,很奇怪。。我认为日历插件只允许在初始化日历时,在页上加载函数中解析事件。@WaftureRobin我很高兴你让它工作了!我想建议您仍然需要
SB.Append($(document).ready(function(){);
和'SB.Append(“}”);`那么“obj”应该是什么,一个字符串?假设我想在“[{title:'All Day Event',start:'2016-01-01'},{title:'Long Events',start:'2016-01-07',end:'2016-01-10'}”中解析,我该怎么做?我是否必须创建一个包含财产“所有权”的类,“开始”和“结束”?obj将是任何类的c#对象,您希望将其转换为json字符串或创建自己的类,而不是将其转换为json。这取决于您希望看到json的方式。是的,您是对的。您必须使用数据创建类,而不是将其转换为json,以便在前端使用查看我发布的答案。我尝试过使用你的方法,但它不起作用;在客户端