2013-08-27 92 views
1

我有一個aspx頁面用來封裝幾個函數。這些函數在頁面加載中被調用,並通過jQuery中添加到POST請求的字符串變量來選擇。Ajax錯誤處理C#

我的問題是,我該如何返回錯誤代碼如果說,出於某種原因不包含所需的ID號POST請求等

同時,我想知道,如果我這樣做是正確的(我有一個表單,需要能夠添加和從列表中刪除ID,我通過操縱從我從jQuery調用的這個頁面的會話來做到這一點)。

我到目前爲止有:

調用頁面:

function addItem(code) { 
     $("#SubtypeTextbox").load(
      "../../src/ajax/Subtype.aspx", 
      { 
       Action: "Add", 
       SID: code 
      } 
     ); 
    } 

和被叫頁的aspx.cs:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class Scripts_ajax_Subtype : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Request.Form["Action"] == null) 
     { 
      Response.Clear(); 
      Response.StatusCode = 409; 
      Response.TrySkipIisCustomErrors = true; 
      Response.Write("<p class=\"Errors\">Action is required.</p>"); 
     } 
     else if (Request.Form["SID"] == null) 
     { 
      Response.Clear(); 
      Response.StatusCode = 409; 
      Response.TrySkipIisCustomErrors = true; 
      Response.Write("<p class=\"Errors\">Subtype ID is required.</p>"); 
     } 
     else 
     { 
      //Execute request 
     } 
    } 
} 
+0

爲什麼使用AJAX調用來調用.aspx頁面的Page_Load?這種打敗AJAX電話的目的是不是?如果您想要回傳,那麼只需在您的網頁中使用服務器控件來回傳(即'AutoPostBack =「True」')。 –

+0

對不起,我不想讓我回發,我希望頁面保持靜態,並調用這個其他頁面來影響原始數據,如果這是有道理的。 – Jack

回答

1

我建議你調查ASP.NET AJAX頁面方法。他們本質上是一個ASP.NET頁面內託管的網絡服務,如:

[WebMethod] 
public static string GetDate() 
{ 
    return DateTime.Now.ToString(); 
} 

現在,你可以通過jQuery調用頁面方法,如下:

$.ajax({ 
    type: "POST", 
    url: "YourPage.aspx/GetDate", 
    data: "{}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
     // Do something interesting here. 
    } 
}); 

注:ASP.NET AJAX頁面方法必須是靜態的,並且沒有Page類的實例,但是如果正確裝飾頁面方法,則它們無權訪問HttpContext.Current.Session對象。

最後,ASP.NET AJAX頁面方法對它們的響應進行JSON編碼,所以在頁面方法中不會看到任何序列化代碼,因爲它是自動完成的。

+0

如果我向該方法添加[WebMethod(EnableSession = true)],那將允許我修改會話變量?如果是這樣,那麼我怎麼才能修改頁面上的HTML? – Jack

+0

是的,'EnableSession = true'可讓您在'Session'緩存中存儲和檢索值。您將需要修改jQuery'.ajax()'方法的'success'回調中的HTML。 –

+0

非常好,謝謝! – Jack