从Code Behind文件中调用JS函数

时间:2011-10-24 10:24:02

标签: c# javascript asp.net .net vb.net

我无法从我的代码隐藏文件中访问Javascript函数。我需要这样做,因为我正在使用GoogleMaps JS API根据从我的数据库中检索到的地址向地图添加标记。我有一个名为AddMarker的函数,它接收地址作为参数,所以我需要能够从page_load函数中的代码隐藏文件中调用它。

为简化问题,我如何调用此javascript函数来显示带有从我的代码隐藏文件传递的字符串的警报?:

function hello(message)
{
alert(message)
}

提前致谢!

P.S无论是vb还是c#都可以:)

4 个答案:

答案 0 :(得分:1)

应该这样做:

 protected void Page_Load(object sender, EventArgs e) 
 { 
     string bing = "link";
     Response.Write(@"<script language='javascript'>alert(bing);</script>");
 }

答案 1 :(得分:1)

我不确定这是否是最佳做法,但您可以在定义后在页面的某个位置渲染对JS函数的调用。

或者您可以使用jQuery延迟调用,直到呈现页面中的所有内容。

所以

<script type="text/javascript">

$(document).ready(function(){

hello("myAspString");

});

</script>

将myAspString替换为您的内容,确保根据JS的需要保留引号。

答案 2 :(得分:1)

此代码将导致函数hello使用后面的代码中的值进行调用:

string value = "world";
Page.ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "my_script", string.Format("hello('{0}');", value.Replace("'", "\\'")), true);

RegisterClientScriptBlock会在发送给浏览器的HTML输出中附加正确的<script>标记,并将代码注入其中。

第二个参数是脚本的“键”,它使您能够拥有多个语句并检查是否已根据键注册了特定语句。最后一个参数告诉框架为您添加<script>标记。

您需要使用正确的转义序列替换任何单引号,以避免在包含单引号时断开字符串,因为这是用于将值传递给函数的“分隔符”。

答案 3 :(得分:1)

您可能会认为这是一个黑客,但您可以始终将您的消息放在一个html元素中,如:

<p id='message' style='display: none;'>Your Message</p>

然后在你的javascript中:

function hello()
{
    var m = document.getElementById('message').innerHTML;
    alert(m);
}