在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是客户端。有什么方法可以做到吗?
答案 0 :(得分:2)
如果加载页面,您可以注册一些要执行的JavaScript:
Page.ClientScript.RegisterStartupScript(this.GetType(), "SomeUniqueTextHere", "yourJSFunction();", true);
修改强>
对于参数,你绝对可以将参数从C#传递给JavaScript,如下所示:
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>
此外,值得注意的是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。
答案 1 :(得分:0)
这对我有用
Page.ClientScript.RegisterStartupScript(
this.GetType(),
"scriptsKey",
"<script type='text/JavaScript' language='javascript'>alert('" +parameter+ "');</script>");