我有两个按钮与点击功能C#/ asp.net全局变量?
第一个单击时获取分配变量。
如何让我的第二个按钮来从第一按钮的变量,当我点击按钮2?
这似乎并没有工作。由于第二个按钮不能识别变量。
感谢
编辑:
只是为了澄清我的代码生成的PDF文件。按钮1选择要使用的模板的网址。并在按钮2(生成PDF的那个)我想要它从按钮1获得变量集,以便它知道要使用的模板。
编辑2: 我的代码的工作,但只有当我不使用AJAX更新面板。看来,我试图设置变量不会与AJAX
设置我有两个按钮与点击功能C#/ asp.net全局变量?
第一个单击时获取分配变量。
如何让我的第二个按钮来从第一按钮的变量,当我点击按钮2?
这似乎并没有工作。由于第二个按钮不能识别变量。
感谢
编辑:
只是为了澄清我的代码生成的PDF文件。按钮1选择要使用的模板的网址。并在按钮2(生成PDF的那个)我想要它从按钮1获得变量集,以便它知道要使用的模板。
编辑2: 我的代码的工作,但只有当我不使用AJAX更新面板。看来,我试图设置变量不会与AJAX
设置您的按钮具有Id
,你得到这个按钮与他Id
诺塔:您可以依次添加RUNAT =“服务器”在服务器端可视化
<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参数来获取objet按钮。
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;}
}
这是可行的,因为'Button1.Text'和'Button2.Text'一个持久性机制 - 即'Button'控件使用ASP.NET ViewState的概念。这是你需要了解的坚持状态。 – tomfanning
默认情况下,TomFanning和EnableViewState =“true”,谢谢你的额外评论 –
我关闭了视图状态!这可能是我的问题,因为我在提问之前尝试了这个问题。我会放弃这一点。 –
我猜你正在寻找访问用于该值在Button1的Click事件中设置按钮2的单击事件中一个变量的值?
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 click事件里面的值。
另请阅读ASP.NET页面生命周期以及ASP.NET框架如何处理按钮点击等客户端事件。
在这种情况下,你应该真正使用视图状态,而不是会话。 – Servy
@Servy他没有要求控制属性,他想要在两个不同的事件中访问一个全局变量的值? ViewState仅适用于Text等控件属性。为什么downvote?看看这些标签。 –
视图状态不仅仅用于控制属性。控件属性存储在那里,但其他一些东西也是如此,包括适当的用户内容。这都是范围问题。 ViewState的内容被限制在这个页面,以及所有的回传到这个页面。它作为隐藏的HTML字段与每个请求/响应来回传递。会话存储在服务器的内存中,并且将远远超出此单页生命周期的范围。这很糟糕,这既是因为浪费资源,也是因为它意味着你永远无法打开这个页面两次(无论如何都没有错误)。 – Servy
你能和你已经尝试什么分享您的代码? –
没有什么可以分享的,想象两个带有点击功能的准系统按钮。第一个被分配一个字符串。我想第二个按钮,能够 –
您需要了解“范围”,以使用该字符串 - 这里有一个链接:http://msdn.microsoft.com/en-us/library/ms973875.aspx –