在asp.net中调用客户端的服务器端方法

问题描述:

这是我必须在ASP.NET页面中使用的JavaScript,如何更改它以便它可以在ASP.NET中使用?在asp.net中调用客户端的服务器端方法

<script type="text/javascript"> 
     window.onload = function() 
     { 
      /** 
      * These are not angles - these are values. The appropriate angles are calculated 
      */ 

      <% Message message = (Message)request.getSession().getAttribute("message"); 

      out.print("var pie1 = new RGraph.Pie('pie1',"+Statistics.messagePercentStats(message.getMessageID()) + ")"); %> 

      // Create the pie object 
      pie1.Set('chart.key', ['Read', 'Received', 'Not Received']); 
      pie1.Set('chart.colors',['#86cf21', '#eaa600', '#e01600']); 
      pie1.Set('chart.title', "Message Status"); 
      pie1.Set('chart.align', 'left'); 
      pie1.Set('chart.shadow', true); 
      pie1.Set('chart.radius', 80); 
      pie1.Set('chart.labels.sticks', false); 
      pie1.Set('chart.highlight.style', '2d'); // Defaults to 3d anyway; can be 2d or 3d 


      if (!RGraph.isIE8()) 
      { 
       pie1.Set('chart.zoom.hdir', 'center'); 
       pie1.Set('chart.zoom.vdir', 'up'); 
       pie1.Set('chart.labels.sticks', false); 
       pie1.Set('chart.labels.sticks.color', '#aaa'); 
      } 
      pie1.Draw(); 
     } 
    </script> 

我应该如何改变这一行来从我的类值被命名为messagePercentStats

RGraph.Pie('pie1',"+Statistics.messagePercentStats(message.getMessageID()) + ")"); %> 
+0

你将不得不实行某种形式的web服务要做到这一点 - 你不能使用服务器上的一个对象*活*刚刚从浏览器 - 有一些框架的工具,使那些魔术发生(WebSharper和F#自带但我不认为有这样的* C#中的纯* ASP.NET# – Carsten

+0

我的意思是页面加载后 – Mano

+0

“页面加载后”?页面加载将在您的服务器上执行,并且只是呈现发送到浏览器的HTML的一个步骤。当浏览器最终执行JavaScript时,在PageLoad中创建的对象甚至可能已经被GC回收了 - 不,正如我所说的,您必须创建WebService(或类似)并在您的JavaScript代码中调用此对象。 – Carsten

我想你可能会试图做到这一点,假设RGraph.Pie是客户端。

RGraph.Pie('pie1', 
      '<%= Statistics.messagePercentStats(
        ((Message)request.Session["message"]).getMessageID() %>');