【问题标题】:Pass a value to a Javascript function from C# code behind从后面的 C# 代码将值传递给 Javascript 函数
【发布时间】:2017-05-25 10:06:30
【问题描述】:

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

<script>
    function somefun(value)
    {

    }
<script> 

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

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

但是当它运行时,该功能不能正常工作。我得到这样的打印输出

"somefun(变量的内容)"

会有什么问题?

【问题讨论】:

    标签: c# javascript asp.net code-behind


    【解决方案1】:

    尝试:

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

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

    【讨论】:

    • 这给出了相同的结果。
    【解决方案2】:

    首先,我喜欢使用一个函数在客户端浏览器上执行 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)。

    【讨论】:

    • 是的,ExecuteJavascript("alert('test');");作品。但是 ExecuteJavascript(String.Format("somefun('{0}');", filePath1));给出一个错误。错误:无法获取未定义或空引用的属性“SetVariable”
    • somefun('Test.txt');这在语法上是正确的,您得到的 SetVariable 错误必须是与在 .Net 中执行的代码无关的 Javascript 错误。
    【解决方案3】:

    请试试这个

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

    【讨论】:

    • 字符串与 + 的连接在功能上等同于 string.format。您的建议不会有任何影响
    【解决方案4】:

    这应该可行。

    C#代码:

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

    JavaScript 函数:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-06
      • 1970-01-01
      • 2016-10-10
      • 2013-09-23
      • 1970-01-01
      • 2014-09-26
      • 2013-11-20
      • 2011-09-05
      相关资源
      最近更新 更多