2009-02-23 43 views
24

我知道我可以使用下面的語法調用使用jQuery

$.ajax({ 
    type: "POST", 
    url: "Default.aspx/GetDate", 
    data: "{}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
    // Replace the div's content with the page method's return. 
    $("#Result").text(msg.d); 
    } 
}); 

這適用於ASPX頁面,但它可能與ASCX頁面調用jQuery的一個頁面方法的ASCX頁的方法? (網絡控制)

我一直在嘗試它大約半小時,因爲我無法得到它的工作,我想知道如果它甚至可能。

注:只是要清楚,當我嘗試調用的ascx頁面我更新jQuery的:)

回答

26

不,因爲ascx控件並不代表可從客戶機訪問的真實URL。它們純粹是服務器端,旨在嵌入其他頁面。

你可能想要做的只是提供一個aspx頁面,該頁面提供了與ascx文件中相同的html代碼片段。一個aspx頁面並不一定需要提供一個完整的html文檔(< html> < body>等),它只能渲染你感興趣的用戶控件。

我們一直使用這種技術這個ingrid插件需要一個表格內容的回調url。

+0

我會補充說,你提供的代碼片段的方式是通過在頁面上包含控件,而不是複製代碼。 – 2009-02-23 19:48:38

+0

如果控件也用於服務器端,我絕對同意。但是,如果目的純粹是用作jQuery回調,並且控件永遠不會在服務器端使用另一個aspx頁面內聯,那麼這就是不必要的混亂。在這種情況下,只需將代碼放入aspx頁面即可。 – Clyde 2009-02-23 20:01:27

2

我不認爲這將是可能的URL,如用戶控件不意味着可以在外部訪問(在頁面之外)。我建議只使用腳本服務(網絡服務)。

4

我不認爲通過直接請求ascx文件是可能的,將「MyControl.ascx」作爲url參數提供給$ .ajax(..)。 ascx文件不會直接由Web服務器公開。

我相信你可以提供包含用戶控件的aspx頁面的url - 如果MyControl.ascx的一個實例位於MyPage.aspx上,則必須提供「MyPage.aspx」作爲url參數。這聽起來可能會破壞你想要完成的目標。

編輯:克萊德在下面說什麼似乎是一個好主意。我正在做一些類似的工作,將ascx控件包含在一個頁面中,該頁面的工作或多或少只是爲了從客戶端腳本訪問它。

+0

做的第一部分在這裏工作?我必須將JSON數據發送到ascx.cs文件中的函數,而不必將此ascx標記和代碼重構爲其包含的aspx頁面。 – 2016-09-07 13:14:43

2

如何在.aspx頁面上創建方法,並根據控件中的信息執行所需的操作?我知道人們會回顧和控制應該包含或不包含的控件,但如果控件只包含屬性和對象,我會認爲讓.aspx頁面中的函數可以爲您工作。顯然會有很多折衷。

1

我會創建一個通用處理程序(.ashx)加載控件並將其呈現的HTML寫入響應。

0

可以Default.aspx中或其他aspx文件寫方法GETDATE(),你可以調用該方法從.ascx文件

例:

在UserControl.ascx:

$.ajax({ 
type: "POST", 
url: "Default.aspx/GetDate", 
data: "{}", 
contentType: "application/json; charset=utf-8", 
dataType: "json", 
success: function(msg) { 
// Replace the div's content with the page method's return. 
$("#Result").text(msg.d); 
} 

});

在Default.aspx.cs:

Public void GetDate() //Public static void { //your code here }