ASP.NET AJAX

出自 ProgWiki
前往: 導覽搜尋

ASP.NET AJAX,參照:『維基百科~ASP.NET_AJAX

技術文件

ASP.NET AJAX版本

ASP.NET 2.0 AJAX Extensions

Microsoft AJAX Library 3.5 SP1

ASP.NET AJAX 4.0

AJAX Control Toolkit

應用

FAQ

AJAX Control Toolkit沒有顯示出中文介面?

  1. 在【ScriptManager】或【ToolkitScriptManager】,裡面有兩個屬性【EnableScriptGlobalization】、【EnableScriptLocalization】,把這兩個屬性預設由False改為True
  2. 修改Web.config檔,在<system.web>區塊中加入UI文化特性的設定<globalization culture="zh-TW" uiCulture="zh-TW" />

關於把AJAX的RunTime包進Web安裝檔的方法

需安裝 BMG(Bootstapper Manifest generator)這個工具。

關於UpdatePanel回傳後觸發自訂JavaScript函數

<script type="text/javascript">
//如果要在第一次載入頁面時先跑過一次的話
UpdatePanelAfterEvent();
 
//每次UpdatePanel回傳後觸發
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(UpdatePanelAfterEvent);
</script>
  • 須把這段放在頁面最後,若放在head區塊內,可能無法順利觸發

$get()與$find()的差異

  • var $get = Sys.UI.DomElement.getElementById = function Sys$UI$DomElement$getElementById(id, element)
    若使用 $get(id) 則相當於使用 document.getElementById(id),傳回一個HTML的Element
  • var $find = Sys.Application.findComponent = function Sys$_Application$findComponent(id, parent)
    若使用 $find(id) 則相當於使用 Sys.Application._components[id],傳回一個以ASP.NET AJAX機制封裝的component

如何顯示Loading圖示

<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1">
    <ProgressTemplate>
        <div style="position:fixed; width:100%; height:100%; text-align:right; vertical-align:top; z-index:40002">
            <img src="/Images/ajax-loader.gif" style="border: 0px;" alt="" />
        </div>
    </ProgressTemplate>
</asp:UpdateProgress>
 
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        略...
    </ContentTemplate>
</asp:UpdatePanel>

如何攔截ASP.NET AJAX的錯誤訊息,避免瀏覽器跳出JavaScript錯誤

<asp:ScriptManager ID="ScriptManager1" runat="server" OnAsyncPostBackError="ScriptManager1_AsyncPostBackError" />
<script type="text/JavaScript" language="JavaScript">
    function pageLoad()
    {      
       Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequest);
    }
 
    function endRequest(sender, args)
    {
        if (args != null) {
            var Error = args.get_error();
            if (Error != null) {
                args.set_errorHandled(true);
                alert(Error.message);
            }
        }
    }    
</script>

protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
{
        ScriptManager1.AsyncPostBackErrorMessage = e.Exception.Message; 
}

與 UpdatePanel 控制項不相容的控制項

詳見「Controls that Are Not Compatible with UpdatePanel Controls」該段落