Ajaxページメソッドを使用するページがあります。ページが最初に読み込まれると、ユーザーは年を選択するように求められます。PostBackが発生するのはこれだけです。年は、SelectedYearという名前のプライベート静的ページレベル整数プロパティに格納されます。クライアントからサーバーにデータを渡すページメソッドはいくつかありますが、年は常にサーバーに保存されるため、再度渡す必要はありません。問題は、サーバーWebMethod内で、SelectedYearプロパティが0に戻っているように見える場合があります。0をテストしてエラーをクライアントに返すことはできますが、なぜ発生したのかを説明できれば役に立ちます。現時点ではわかりません。何か案は?私はこのスタイルのプログラミングに少し慣れていません。これが(非常に単純化された)コードの例です。
これが私のC#サーバーコードです:
public partial class Default : System.Web.UI.Page
{
private static int SelectedYear;
protected void YearSelected(object sender, EventArgs e)
{
if (sender.Equals(btnCurrentYear))
SelectedYear = 2013;
else
SelectedYear = 2014;
}
[WebMethod]
public static bool Save(string FirstName, string LastName)
{
try
{
if (HttpContext.Current.User.Identity.IsAuthenticated)
//Right here, SelectedYear is sometimes 0.
SaveApplication(FirstName, LastName, SelectedYear);
else
throw new Exception("User is not logged in.");
}
catch (Exception ex)
{
throw;
}
}
}
これが私のJavaScriptクライアントコードです:
function Save(FirstName, LastName) {
PageMethods.Save(firstName, LastName, SaveSucceeded, SaveFailed);
}
function SaveSucceeded(result) {
//Notify user that save succeeded.
}
function SaveFailed(error) {
//Notify user that save failed.
}