2016-03-10 6 views
2

Я написал функцию (addCalendarEvents), которая принимает массив (события) и анализирует его в пользовательский календарь. Все отлично работает, когда его выпустили через document.ready функции, события регистрации и т.д.Анализ двумерного массива из кода ASP.NET C# позади Javascript

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) 
} 

Однако, мне также нужно их уволят через код позади для добавления событий динамически. Я пробовал использовать RegisterStartupScript ScriptManager, но он не работает. Есть ли у меня подходящий способ сделать это?

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); 
} 

ответ

0

It может быть просто r для использования элемента управления <asp:Literal id="StartupScript" runat=server />, содержащего функцию $(document).ready(), для ввода выносок на загрузку страницы.

Вы можете написать инструкции в литеральном контроле в своем Page_Load событиях, и они должны быть выполнены клиентом, когда страница будет готова.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication4.WebForm1" %> 
 

 
<!DOCTYPE html> 
 

 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 
<head runat="server"> 
 
    <title></title> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> 
 
    <asp:Literal ID="CodeInject" runat="server"/> 
 
</head> 
 
<body> 
 
    <form id="form1" runat="server"> 
 
    <div> 
 
    
 
    </div> 
 
    </form> 
 
</body> 
 
</html>

И код за это:

protected void Page_Load(object sender, EventArgs e) 
    { 
     StringBuilder SB = new StringBuilder(); 
     SB.Append("<script>"); 
     SB.Append("$(document).ready(function() {"); 

     // statements here 
     SB.Append("alert('test');"); 


     SB.Append("});</script>"); 
     CodeInject.Text = SB.ToString(); 
    } 
+0

Вы не можете просто поместить элемент управления aspx в функцию document.ready(). Как вы предлагаете, чтобы они это сделали? –

+0

Понятно, что прошло некоторое время с тех пор, как я работал с элементами управления asp.net, но я помню, как записывал весь тег, включая функцию «

0

пытается преобразовать данные в формат JSON при добавлении скрипта. Добавьте ваши сборки

using this Assembly 
using System.Web.Script.Serialization; 

Затем Deserialize ваш объект

var json = new JavaScriptSerializer().Serialize(obj); 

затем вызвать RegisterStartupScript

ScriptManager.RegisterStartupScript(this, this.GetType(), "addEvents", json, true); 

и на стороне клиента сделать это, чтобы преобразовать его в формат JSON

var obj = JSON.parse(string); 
+0

Как я могу это сделать? Вы не разделяете коды? – WaftureRobin

+0

проверить код, который я разместил – rashfmnb

+0

, и что должно быть «obj», строка? Допустим, если я хочу разобрать «[{title:« All Day Event », начало: '2016-01-01'}, {title:« Long Events », start: '2016-01-07', end: '2016-01-10'}] 'Как я могу это сделать? Нужно ли мне создавать класс, в котором есть свойство «title», «start» и «end»? – WaftureRobin

Смежные вопросы