簡體   English   中英

在javascript中使用c#變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM