2012-05-23 4 views
0

Я пытаюсь вызвать некоторую функцию из моего кода в C#. Я искал, как это сделать, и смог вызвать предупреждение для отображения, когда захочу. Однако я не знаю, как назвать другие вещи!Вызов Javascript (библиотека Raphael.js) из C# codebehind в ASP.NET

Это то, что мне нужно вызвать из кода позади:

var paper = Raphael("paper1", 800, 800); 
var Plan = paper.path("M100, 100 a 50, 50 0 0,1 50, 50 l -50 0 l 0, -50"); 
Plan.attr({ fill: "#FF6600" }); 

Я попробовал это на простой HTML файл, но я не могу использовать его. Я также использую главную страницу, и большинство примеров, которые я нашел, были без мастер-страниц, поэтому я довольно потерял это.

Любой может помочь?

+0

Как вы получаете 'предупреждение()' вызов работать тогда? Вы не можете «называть» что-либо в браузере, вы можете вывести только ' ", false); – user1412716

+0

Вызов блока кода в вашем вопросе должен работать точно так же. Что происходит, когда вы пытаетесь это сделать? Выводит ли код JS в браузер вообще? Есть ли ошибки в консоли JS браузера? – millimoose

ответ

0

Создание функции Javascript на странице .aspx, а затем вызвать функцию из кода за примерно так:

функции в HTML код

function dostuff() 
{ 
    // code here 
} 

C# code in code behind 
protected void callmethod() 
    { 
     StringBuilder oSB = new StringBuilder(); 
     Type cstype = this.GetType(); 


     try 
     { 
      oSB.Append("<script language=javaScript>"); 
      oSB.Append("dostuff();"); 
      oSB.Append("</script>"); 
      Page.ClientScript.RegisterClientScriptBlock(cstype, Guid.NewGuid().ToString(), oSB.ToString(), false); 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
     finally 
     { 
      oSB = null; 
     } 
    } 
+0

Я пробовал это, и предупреждение срабатывало. Это то, что я сейчас в моем файле ASPX <жерех: Content ID = "Content1" ContentPlaceHolderID = "голова" Runat = "сервер"> <тип скрипта = "текст/JavaScript" SRC = "Raphaël.js "> функция draw() { var бумага = Raphael (" бумага1 ", 800, 800); var Plan = бумага.путь («M100, 100 a 50, 50 0 0,1 50, 50 l -50 0 l 0, -50»); \t} \t \t user1412716

+0

В коде позади: StringBuilder ОСБ = новый StringBuilder(); Тип cstype = this.GetType(); oSB.Append ("); Page .ClientScript.RegisterClientScriptBlock (cstype, Guid.NewGuid(). ToString(), oSB.ToString(), false); Но это не работает! Есть идеи? – user1412716

+0

"); Page.ClientScript.RegisterClientScriptBlock (cstype, Guid.NewGuid(). ToString() , oSB.ToString(), false); Это должно работать. –

0

Javascript можно вызвать только на стороне клиента. Если вам абсолютно необходимо называть это с вашего сервера, вы можете использовать значение asp: HiddenField в качестве флага, когда вам нужен код javascript, выполняемый при возврате, а затем запустить необходимый javascript, если будут выполнены требования.

Но это нехорошее решение, вы должны, вероятно, попытаться отделить сервер и клиент.

Надеюсь, это поможет, в любом случае!

+0

Итак, что бы вы предложили, чтобы иметь возможность сделать это? Мне просто нужно напечатать некоторые фигуры на экране в зависимости от статуса некоторых элементов, которые берутся из базы данных. Я сделал это с помощью CSS, но глупый IE не работал с ним. – user1412716