从C#代码后面向Javascript函数传递一个值

Pass a value to a Javascript function from C# code behind

本文关键字:一个 函数 代码 Javascript      更新时间:2023-09-26

我在.aspx文件中有这个javascript函数。

<script>
    function somefun(value)
    {
    }
<script> 

我正在代码隐藏类中调用该函数并将值传递给该函数。

ScriptManager.RegisterStartupScript(this, typeof(string), "Passing", String.Format("somefun('{0}');", filePath1), false);        

但当它运行时,该函数无法正常工作。我得到一个像这样的打印输出

"somefun(变量的内容)"

问题出在哪里?

尝试使用:

ScriptManager.RegisterStartupScript(this, typeof(Page), "Passing", String.Format("somefun('{0}');", filePath1), false);        

来源:http://msdn.microsoft.com/it-it/library/bb350750(v=vs.110).aspx

首先,我喜欢使用一个函数在客户端浏览器上执行Javascript代码。。。

#region ExecuteJavascript
private int _intScriptIndex = 0;
private void ExecuteJavascript(string strScript)
{
    System.Web.UI.ScriptManager.RegisterStartupScript(Page, typeof(Page), "ExecuteScript" + _intScriptIndex++, strScript, true);
}
#endregion

现在我只是这样调用JavaScript。。。

ExecuteJavascript("alert('test');");

要调用带有变量的函数,您可以这样做。。。

ExecuteJavascript(String.Format("somefun('{0}');", filePath1));

这样就可以了。为什么我的有效而你的无效的关键可能是在RegisterStartupScript的属性中,请注意,我将Page和typeof(Page)传递到你放置字符串的位置。

请尝试此

ScriptManager.RegisterStartupScript(this, typeof(string), "Passing", "somefun('" + filePath1 + "');" ,false); 

这应该可以工作。

C#代码:

String vls_variable = "TestData";
ScriptManager.RegisterStartupScript(this, typeof(string), "script1", "SampleJSFunction('" + vls_variable + "');", true);

JavaScript函数:

function SampleJSFunction(variable) 
{  
    var data = variable;
    alert("working");            
}