2016-03-02 72 views
0

我有我的ASP淨網頁上的代碼(it's的URL與ID www.example.com/GestHC.aspx?pID=36006394)靜態變量GET參數

public partial class GestHC : WebPart 
{ 
    public GestHC() 
    { 
    } 
    static int iIDHC; 

    protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 
     InitializeControl(); 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!this.Page.IsPostBack) 
     { 

      iIDHC = -1; 
      string str = this.Page.Request["pID"]; 
      iIDHC = int.Parse(str.Replace("'", "")); 

      MyModel hc = MyModel.readdata(iIDHC); 

      this.txtName.text = hc.name 
      this.txtSurname.text = hc.surname 
      ... 

     } 
    } 

    protected void btnSave_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      MyModel hc = new MyModel(); 
      if (iIDHC != -1) 
      { 
       hc = MyModel.readdata(iIDHC);     
      } 
      else 
      { 
       hc.name = txtname.text; 
       hc.surname = txtSurname.text; 

      } 

      hc.dir1 = dir.text; 
      ... 

      hc.savedata() 
     } 
     catch (Exception) 
     { 
      this.navegarAGridMensaje("Error"); 
     } 
    }  
} 

的問題是,當用戶加載數據並保存時,一切工作正常,但當超過2個用戶或瀏覽器一起工作時,數據會混合在一起。例如:

User a creates: 
ID = 10 
Name = XXX 
Age = 8 

User b creates: 
ID = 11 
Name = YYY 
Age = 10 

然後,如果用戶更新他數據(ID = 10),或許設置Age80結果是

User a creates: 
ID = 10 
Name = XXX 
Age = 8 

User b creates: 
ID = 11 
Name = YYY 
Age = 88 

所以(ID = 11)被更新。 Debuggin ..我可以看到一個靜態ID,當第二個用戶加載它可以讀取以前的用戶iIDHC ....

如何避免此問題?

回答

0

使其非靜態!

public partial class GestHC : WebPart 
{ 
    public GestHC() 
    { 
    } 
    private int iIDHC = -1;//initialize here 
... 
} 

還你沒有在頁面加載初始化

protected void Page_Load(object sender, EventArgs e) 
{ 
    //iIDHC = -1; - not required as you can initialize it during declaration 
} 
+0

yap,但是如果我打開de ID = 10,當我點擊保存按鈕時,iIDHC值是-1而不是10.我想可能是將iIDHC值保存在隱藏的輸入框中或其他東西... –

+0

嗯..當你保存iIDHC時,如何將iIDHC更新爲10。我有點困惑,所以不能確切地指出我的問題。但想法是將ID保留在一個地方,並在每次更改時都保持更新。一個實例變量應該足以處理這個問題。 – CarbineCoder

1

您可以使用Session對象,而不是(https://msdn.microsoft.com/en-us/library/ms178581.aspx)。

當您將數據存儲在靜態變量中時 - 它將在應用程序中的所有用戶之間共享。

+0

我們不能使用會話變量。我會去隱藏輸入可能 –

+0

由你決定。如果它適合您的業務需要,您也可以使用cookie。 –