如何从服务器端C代码触发客户端javascript?

如何从服务器端C代码触发客户端javascript?,javascript,c#,asp.net,client-side,server-side,Javascript,C#,Asp.net,Client Side,Server Side,在ASP.Net站点中,我想在事件发生后使用一些javascript,比如说alert()函数;我希望能够在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

在ASP.Net站点中,我想在事件发生后使用一些javascript,比如说
alert()
函数;我希望能够在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是客户端的。我还有什么办法可以这样做吗?

您可以注册一些JavaScript,以便在页面加载后立即执行,如下所示:

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

至于参数,您完全可以将参数从C#传递到JavaScript,如下所示:

Page.ClientScript.RegisterStartupScript(this.GetType(), "SomeUniqueTextHere", "yourJSFunction();", true);
int parameter = 0;
string parameterStr = "hello";
Page.ClientScript.RegisterStartupScript(this.GetType(), "SomeUniqueTextHere", string.format("yourJSFunction({0}, '{1}');", parameter, parameterStr), true);
注意,在本例中,JavaScript函数应该定义为接受两个参数。像这样:

<script type="text/javascript">
    function yourJSFunction (val1, val2) {
        alert(val1);
        alert(val2);
    }
</script>
< >为了传递复杂的C对象,考虑将它们细化为字符串,然后在JavaScript

中使用它们。 最后,按顺序执行服务器端和客户端代码的想法与HTTP协议的设计相矛盾。您所能做的最好的事情就是使用高级JavaScript/C工具,这样就可以轻松地处理两个环境之间的通信。在这种情况下,我想到了这一点。

这对我很有效

Page.ClientScript.RegisterStartupScript(
this.GetType(),
"scriptsKey",
"<script type='text/JavaScript' language='javascript'>alert('" +parameter+ "');</script>");
Page.ClientScript.RegisterStartupScript(
this.GetType(),
“scriptsKey”,
“警报(“+”参数+“);”;

或web sockets。您能提供更多关于您要实现的目标的详细信息吗?@EmmanuelN为了回答这个问题,我希望能够从ASP网页中的组件(比如按钮)和事件内部运行事件(而不是一次客户端单击-我希望在服务器代码中使用它),触发一个警报,该警报包含已保存在服务器端的内容。这是Signal所做的。去用吧。你熟悉Ajax吗?在不刷新页面的情况下调用服务器,服务器返回某种数据,在Ajax调用完成后执行JavaScript…谢谢,但这不是我想要的。我不想要启动脚本,我正在寻找一些可以在事件中运行脚本的东西。那么,您是否正在尝试在服务器端函数中调用/执行客户端函数???为什么???你不能这样做。您可以在回发之前或之后调用JavaScript。记住,为了在不引起页面刷新的情况下执行服务器代码,这可能很方便。此外,您还可以查看SignalR的高级实时场景。@yazanpro我明白。那么,也许这是不可能的。这就是我的解决方案。@A.Abramov我提供了我的答案,提供了更多的细节来满足您问题的概念。看起来,就像yazan的答案一样,此代码只在页面加载时执行。我的目标是在事件函数中运行脚本。
Page.ClientScript.RegisterStartupScript(
this.GetType(),
"scriptsKey",
"<script type='text/JavaScript' language='javascript'>alert('" +parameter+ "');</script>");