代码之家  ›  专栏  ›  技术社区  ›  Liam Kenneth

C#/asp.net全局变量?

  •  2
  • Liam Kenneth  · 技术社区  · 14 年前

    我有两个带有点击功能的按钮

    单击时,第一个将被分配一个变量。

    当我点击按钮2时,如何让我的第二个按钮从第一个按钮获得变量?

    它似乎不起作用。因为第二个按钮无法识别变量。

    谢谢

    编辑:

    只是为了澄清我的代码正在生成一个pdf。按钮1选择要使用的模板的url。在按钮2中(生成pdf的按钮),我希望它从按钮1中获取变量集,这样它就知道要使用什么模板。

    编辑2: 我的代码确实有效,但只有当我不使用ajax更新面板时才有效。我试图设置的变量似乎没有用AJAX设置

    2 回复  |  直到 14 年前
        1
  •  2
  •   Aghilas Yakoub    14 年前

    你的按钮有 Id ,你用他的按钮 身份证

    注:您可以添加runat=“server”以便在服务器端进行可视化

    <asp:Button id="Button1"
               Text="Click "
               OnClick="Btn1_Click" 
               runat="server"/>
    
    <asp:Button id="Button2"
               Text="Click "
               OnClick="Btn2_Click" 
               runat="server"/>
    
    void Btn2_Click(Object sender, EventArgs e)
    {
        Button1.Text = "test after click on button 2";
    
        Template = ...;//Set your value
    }
    
    
    void Btn1_Click(Object sender, EventArgs e)
    {
        Button2.Text = "test after click on button 1";
    
        //Here you can get your value after post.
        var result = Template; 
    }
    

    它不是主题,但在委托中,您也可以通过传递sender参数来获得obget按钮。

    var button = sender as Button; //You get button who raise event
    

    为了管理 Template Path 所有物

    public string Template
    {
       get
       {
          if(ViewState["Template"] != null)
          {       
             return (string)ViewState["Template"];
          }
       }
    
       set{ViewState["Template"] = value;} 
    }
    
        2
  •  -1
  •   Vignesh.N    14 年前

    我猜您正在查看在button2的click事件内访问变量的值,该值是在button1 click事件中设置的?

    private string myPrivateString = "";
    
    void Page_Load()//Not sure of correct method signature
    {
      if(Page.IsPostBack)
      {
        myPrivateString = Session["myPrivateString"];
      }
    }
    
    void Button1_Click(object sender, EventArgs e)
    {
      //There will a postback before this gets executed
      myPrivateString = "Value Set From Button 1";
      Session["myPrivateString"] = myPrivateString;
    }
    
    void Button2_Click(object sender, EventArgs e)
    {
      //There will a postback before this gets executed
      //Accessing myPrivateString here without setting value from session
      //will return empty string as after PostBack its a new page thats rendered.
      myPrivateString = Session["myPrivateString"]; // Or do it in the Page_Load event
    }
    

    我想现在你可以获得button2点击事件内部的值了。
    另请阅读有关ASP.NET页面生命周期以及ASP.NET框架如何处理按钮单击等客户端事件。

    推荐文章