簡體   English   中英

如何從文件后面的代碼調用javascript客戶端功能

[英]how to call javascript client side function from code behind file

我將如何從后面的代碼在aspx頁面中調用showItems()函數。

<script>
function getItems(){
  var items = [];
  return items; //items=['a','b','c']
}

<form id="form1" runat="server">
  <asp:Hiddenfield id="HiddenField1" runat="server"></asp:hiddenfield>
</form>

后面的代碼:

ScriptManager.RegisterStartupScript(this, GetType(), "items", "<script type='text/javascript'>getItems()</script>", false);

這里有幾件事...

首先 ,您不要“從服務器端代碼調用客戶端函數”。 可以做的是包括一些客戶端代碼,這些代碼本身將稱為函數“客戶端”。 似乎是您在做什么,但我只想確保您了解其中的區別。

其次 ,您的函數稱為showItems ,但您正在調用名為getItems的函數:

<script type='text/javascript'>getItems()</script>

而是調用showItems() 像這樣?:

ScriptManager.RegisterStartupScript(this, GetType(), "items", "<script type='text/javascript'>showItems()</script>", false);

第三showItems函數返回一些信息。 但是,您實際上並沒有為該結果做任何事情 您只是在調用該函數而忽略結果。 因此,目前尚不清楚您要完成什么。

像這樣:

Page.ClientScript.RegisterStartupScript(GetType(), "key", "showItems();", true);

編輯 :要獲取C#代碼后面的javascript返回值,請使用javascript代碼將值分配給隱藏的控件。 然后,您可以使用C#代碼訪問“隱藏”控制值。 看一下這篇文章。 例如:

<script type="text/javascript">
    function showItems() {
        var items = new Array(3);
        items[0] = "name1";
        items[1] = "name2";
        items[2] = "name3";
        items[3] = "name4";

        document.getElementById('<%=HiddenField1.ClientID%>').value = items.join(',');
    }
</script>

並在后面的代碼中:

string[] itemArr = HiddenField1.Value.Split(",".ToCharArray());

暫無
暫無

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

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