[英]using c# variable in javascript
我想知道如何在 javascript 中使用 C# 變量?
如果我理解您的意圖,請在您的 ASPX 頁面中嘗試此操作
<script type="text/javascript">
<!--
function showCSharpVar() {
alert('<%= myCSharpVariable %>');
}
-->
</script>
其中 myCSharpVariable 是在代碼隱藏頁面中聲明的公共變量,如下所示
public string myCSharpVariable = "display me";
如果您需要完成更多涉及的事情,您也可以在頁面上創建一個公共屬性。
另一種選擇是使用 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 注入頁面(例如,您在評論中詢問的數組),但它通常難以追蹤錯誤並且您將無法進行單元測試。
如果您使用的是 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);
}
<script type="text/javascript">
function GetValue() {
var myJsVar = "<%= anyC#Variable %>";
//執行你想要的操作。
}
</script>
但請記住變量“anyC#Variable”的訪問說明符應該高於私有。 您可以采用“受保護”或“公共”,但不能采用私有。
對於 ASP.NET MVC,我得到了以下工作:
var IP = '@HomeController.ServerIP'
其中ServerIP
是 HomeController 類中的public static
變量。 確保在cshtml
文件的頂部導入您的類。
C#:
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "temp", "<script language='javascript'>alert(" + abc + ");</script>", false)
VB:
ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), "temp", "<script language='javascript'>alert(" + abc + ");</script>", False)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.