我有一个使用 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.
}