2015-06-05 39 views
1

在一个ASP.Net站点中,我想使用一些javascript - 比方说alert()函数 - 在事件发生之后;我希望能够在JavaScript中使用事件参数。例如:如何从服务器端C#代码触发客户端JavaScript?

protected void SomeEventName(object sender, eventArgs e) 
{ 
    int parameter = 0; 
    // Do event stuff, which might effect the parameter 
    javascript.alert("In the end of the funtion, the parameter is: "+parameter); // made up syntax, kids do not try this at home. 
} 

问题是,事件是服务器端,JavaScript是客户端。有什么办法我仍然可以做到这一点?

+1

[SignalR(http://www.asp.net/signalr)或网络插座。 – Romoku

+0

你能提供一些你想要实现的更多细节吗? –

+0

@EmmanuelN为了这个问题,我希望能够从ASP网页中的组件运行事件 - 让我们说一个按钮 - 并在事件内部(不是onclientclick) - 我想在服务器代码中使用它),触发一个警报,其中有一些已保存在服务器端的警报。 –

回答

2

可以注册一些JavaScript为页面加载这样的情况下尽快执行:从C#

Page.ClientScript.RegisterStartupScript(this.GetType(), "SomeUniqueTextHere", "yourJSFunction();", true); 

编辑

至于参数,你绝对可以传递参数(S)为JavaScript这样的:你的JavaScript函数应定义在本次考试,接受两个参数

int parameter = 0; 
string parameterStr = "hello"; 
Page.ClientScript.RegisterStartupScript(this.GetType(), "SomeUniqueTextHere", string.format("yourJSFunction({0}, '{1}');", parameter, parameterStr), true); 

公告PLE。就像这样:

<script type="text/javascript"> 
    function yourJSFunction (val1, val2) { 
     alert(val1); 
     alert(val2); 
    } 
</script> 

此外,值得注意的是HiddenField控制可用于客户端和服务器之间传递字符串值:

ASPX:

<asp:HiddenField ID="MyHiddenField" runat="server" Value="MyValue" /> 

的JavaScript:

alert(document.getElementById("<%= MyHiddenField.ClientID %>").value); 

C#:

string value = MyHiddenField.Value; 

为了传输复杂的C#的目的,认为它们字符串化成JSON字符串,然后parsing它们在JavaScript

最后,执行服务器和客户端代码的想法按顺序违背HTTP协议的设计。您可以做的最好的方法是使用高级JavaScript/C#工具,在这两种环境之间进行操作变得非常简单。在这种情况下,想起了SignalR

+0

谢谢,但这不是我要求的,我不想要启动脚本,我正在寻找能够在事件内部运行脚本的东西 –

+1

那么,你是否试图调用/执行一个客户端服务器端函数内部的函数???为什么? –

+0

你不能这样做。您可以在发布之前或之后致电JavaScript。请记住,[网络服务](https://msdn.microsoft.com/en-us/library/bb924552%28v=vs.110%29.aspx)可能很方便,以便执行服务器代码而不会导致页面刷新。另外,你可以看看SignalR的高级实时场景。 – yazanpro

0

这为我工作

Page.ClientScript.RegisterStartupScript(
this.GetType(), 
"scriptsKey", 
"<script type='text/JavaScript' language='javascript'>alert('" +parameter+ "');</script>"); 
+0

)就像yazan的回答一样,这段代码只在页面加载时执行,我的目标是在事件函数中运行脚本。 –

相关问题