簡體   English   中英

將C#值傳遞給Javascript

[英]Pass C# Values To Javascript

在加載頁面時,我想從服務器端變量向我的javascript函數傳遞一個值。

我似乎無法讓它工作這就是我所擁有的:

Asp.Net

protected void Page_Load(object sender, EventArgs e)
{
    string blah="ER432";
}

使用Javascript

<script type="text/javascript">

    var JavascriptBlah = '<%=blah%>';

    initObject.backg.product_line = JavascriptBlah;

</script>

將其添加到頁面

 public string blah { get; set; }


        protected void Page_Load(object sender, EventArgs e)
        {
           blah="ER432";
        }

我仍然收到錯誤:CS0103:當前上下文中不存在名稱'blah'

此外,我想嘗試在不使用hdden字段的情況下完成此操作

我相信你的C#變量必須是一個類成員才能做到這一點。 嘗試在類級別聲明它而不是Page_Load()的局部變量。 一旦page_load完成,它顯然會失去范圍。

public partial class Example : System.Web.UI.Page
{
    protected string blah;

    protected void Page_Load(object sender, EventArgs e)
    {
        blah = "ER432";
        //....

在這個特殊情況下, blahPage_Load本地,你必須使它成為一個類級別的成員(可能使它成為一個屬性),讓它像那樣暴露。

您可以在html頁面中添加隱藏的輸入:

<input  type="hidden" runat='server' id="param1" value="" />

然后在您的代碼后面將它設置為您想要傳遞給.js函數的內容:

param1.value = "myparamvalue"

最后你的javascript函數可以訪問如下:

document.getElementById("param1").value

你應該在班級宣布blah

你的string blah需要是Page類的公共屬性,而不是Page_Load的局部變量。 您需要了解范圍界定。

public class MyPage
{
    public string blah { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
        blah = "ER432";
    }
}

我過去所做的是webforms所做的功能 - 創建一個隱藏的字段來存儲客戶端所需的值。 如果您使用的是4.0,則可以將隱藏字段客戶端ID模式設置為靜態,以幫助保持清潔。 基本上,將您的值添加到隱藏字段,然后從javascript您可以獲取值或修改它(如果您想要傳回它),因為它只是一個dom元素。

如果你真的想使用代碼 - 比如一個變量,它需要在類范圍內可訪問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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