在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()) + ")"); %>
答
我想你可能会试图做到这一点,假设RGraph.Pie
是客户端。
RGraph.Pie('pie1',
'<%= Statistics.messagePercentStats(
((Message)request.Session["message"]).getMessageID() %>');
你将不得不实行某种形式的web服务要做到这一点 - 你不能使用服务器上的一个对象*活*刚刚从浏览器 - 有一些框架的工具,使那些魔术发生(WebSharper和F#自带但我不认为有这样的* C#中的纯* ASP.NET# – Carsten
我的意思是页面加载后 – Mano
“页面加载后”?页面加载将在您的服务器上执行,并且只是呈现发送到浏览器的HTML的一个步骤。当浏览器最终执行JavaScript时,在PageLoad中创建的对象甚至可能已经被GC回收了 - 不,正如我所说的,您必须创建WebService(或类似)并在您的JavaScript代码中调用此对象。 – Carsten