c# - 在 javascript 中使用 C# 变量

标签 c# javascript

我想知道如何在 javascript 中使用 C# 变量?

最佳答案

如果我理解您的意图,请在您的 ASPX 页面中尝试此操作

<script type="text/javascript">
<!--
function showCSharpVar() {
   alert('<%= myCSharpVariable  %>');
}
-->
</script>

其中 myCSharpVariable 是在代码隐藏页面中声明的公共(public)变量,如下所示

public string myCSharpVariable = "display me";

如果您需要完成一些更复杂的事情,您还可以在页面上创建公共(public)属性。

另一个选项是使用 RegisterClientScriptBlock() 或 RegisterStartupScript() 将脚本直接嵌入到页面中。这些是我用来决定最适合情况的标准。

//A. 
//  Page.RegisterClientScriptBlock() will insert the *block* of script just after <form>. 
//  Page.RegisterStartupScript() will insert the script at end of <form>. 
//B. 
//  Page.RegisterClientScriptBlock() should usually be used for scripts encapsulated in functions. (hence the word "block") 
//  Page.RegisterStartupScript() can be used for any script, even if it's  not in a function. 
//C. 
// Page.RegisterClientScriptBlock() should be used for functions that don't need to run on Page load. 
// Page.RegisterStartupScript() should be used for scripts that must run on Page Load. 
//D. 
//  Page.RegisterClientScriptBlock() should be used for a script that does not require the form elements to have been created. 
//  Page.RegisterStartupScript() should be used for scripts that require the form elements to have been created and uses references to them. 
//

使用此方法,您可以将 JavaScript 注入(inject)到页面中(例如,您在评论中询问的数组),但这通常会导致难以跟踪错误,并且您将无法进行单元测试。

如果您使用 UpdatePanel,则可能需要使用其中之一,具体取决于它是完整回发还是部分回发。试试这个来解决这个问题

if (ScriptManager.GetCurrent(referenceControl.Page).IsInAsyncPostBack)
{

    ScriptManager.RegisterClientScriptBlock(referenceControl, referenceControl.GetType(), "uniqueID",
        "Your Script Here", true);
}
else
{
    ScriptManager.RegisterStartupScript(referenceControl, referenceControl.GetType(), "uniqueID",
        "Your Script Here", true);
}

关于c# - 在 javascript 中使用 C# 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3921633/

相关文章:

javascript - SEO 是否读取从 AJAX 加载的数据?

javascript - Tablesorter -> 将过滤后的数据提取到 csv 文件

javascript - 由子路由和在其之上渲染的页面驱动的react-router基础组件

c# - ASP.net core 2.0 MVC 每个新的数据库迁移都包含以前迁移的数据

c# - 如何获取 webapi 对象列表?

javascript - Phonegap 从 PDF 文件获取内容

javascript - 从页面中完全隐藏元素的最有效方法是什么?

c# - 来自模式的类

c# - 如何从我的 Word Addin 中删除工具提示(按 F1 键获取更多帮助)

c# - 是否可以从 C# 中的 HelixToolKit.WPF 迁移到 HelixToolKit.WPF.SharpDX