2013-08-27 2 views
1

У меня есть страница aspx, которую я использую для инкапсуляции нескольких функций. Эти функции вызывают в загрузке страницы и выбираются строковой переменной, добавленной в запрос POST через jQuery.Ошибка обработки Ajax C#

Мой вопрос, как я могу вернуть код ошибки, если, скажем, запрос POST по какой-то причине не содержит необходимого идентификационного номера и т.д.

Как хорошо, я хотел бы знать, если Я делаю это правильно (у меня есть форма, которая требует возможности добавлять и удалять идентификаторы из списка, и я делаю это, манипулируя сеансом с этой страницы, с которой я звоню из 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 для вызова 'Page_Load' страницы .aspx? Разве это не такое поражение цели вызова 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 Page Method JSON-кодирует их ответы, поэтому вы не увидите кода сериализации в методе страницы, потому что это делается автоматически.

+0

Если я добавлю метод [WebMethod (EnableSession = true)], это позволит мне изменить переменную сеанса? И если да, то как я могу изменить HTML на странице? – Jack

+0

Да, 'EnableSession = true' позволит хранить и извлекать значения в кеше' Session'. Вам нужно будет изменить HTML в обратном вызове метода jQuery '.ajax()' success'. –

+0

Очень хорошо, спасибо! – Jack

Смежные вопросы