後台調用前台javascript方法報錯:“缺少對象”的解決方案

來源:互聯網
上載者:User
今天同事請教如何在ASP.net的後台C#中,調用前台的javascript事件,我想起了ClientScriptManager。準備給他寫個調用的例子。前台的html裡嵌入一段指令碼javascript

    <script type="text/javascript" language="javascript">
    function testAlert()
    {
        alert("豬頭");
        return false;
    } 
    </script>

然後放了一個按鈕,雙擊後後台寫入他的點擊事件:    protected void Button1_Click(object sender, EventArgs e)
    {
        String csname1 = "PopupScript";
        Type cstype = this.GetType();
        ClientScriptManager cs = Page.ClientScript;
        if (!cs.IsStartupScriptRegistered(cstype, csname1))
        {
            String cstext1 = "testAlert();";
            cs.RegisterStartupScript(cstype, csname1, cstext1, true);
        }
    }

結果一測試,老是報錯:“缺少對象”。這下鬱悶了,不知道什麼地方出了問題,是因為命令中包含了分號?去掉分號後,仍然報次錯。鬱悶許久以後,靈機一動,把剛才那段js單獨寫為一個js檔案,然後在頁面中連結方式嵌入次檔案<script type="text/javascript" language="javascript" src="js/test1.js"  />

再試,ok!測試通過了!指令碼調用成功。但原因還是不知何故。

之所以沒有採用 Button1.attribute.add("onclick","testAlert()"); 的方式,因為他需要幕後處理一下資料,並作為參數傳遞給那個js的方法。

2007-2-10 1:00 原因查明:
只需要把
<script type="text/javascript" language="javascript">
function testAlert()
{
alert("豬頭");
return false;
}
</script>
改為
<script type="text/javascript">
function testAlert()
{
alert("豬頭");
return false;
}
</script>
就好了!去掉那個 language="javascript" 的屬性即可! 

2007-3-21 更新
(在Asp.Net AJAX 1.0下,如果觸發按鈕在UpdatePannel中調用前台js方法時,需做如下改動)

ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(),
            "close", "CloseMe();", true);

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.