2016-03-02 96 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。 –