在AutoPostBack事件触发之前,如何通过单击ASP:Button来设置会话变量。
以下是我现在所拥有的,但我不确定我做得对:
<asp:Button ID="CommitBTN" runat="server" PostBackUrl="~/MMR_Home.aspx"
onclick="CommitBTN_Click" UseSubmitBehavior="true"
OnClientClick='<% string temp1 = "true"; Session["ClickedFlag"] = temp1; %>' Text="Commit Changes to Database" />
这是执行此操作的正确方式吗?还是我完全错了?
编辑:
将我的按钮标签更改为:
<asp:Button ID="CommitBTN" runat="server" PostBackUrl="~/MMR_Home.aspx"
onclick="CommitBTN_Click" OnClientClick="document.getElementById('<%= Hidden.ClientID
%>').value='1'" UseSubmitBehavior="true" Text="Commit Changes to Database" />
我收到这个作为我的错误:
Microsoft JScript运行时错误:无法设置属性"value"的值:对象为null或未定义
使用此:
aspx文件内部:
<form runat="server">
<asp:Button ID="CommitBTN" runat="server" Text="Button" onclick="CommitBTN_Click" OnClientClick="document.getElementById('HiddenField').value='Ram'"/>
<asp:HiddenField ID="HiddenField" runat="server" />
</form>
或
<script type="text/javascript">
function setMyHiddenField(myValue) {
document.getElementById('HiddenField').value = myValue;
}
</script>
<form runat="server">
<asp:Button ID="CommitBTN" runat="server" Text="Button" onclick="CommitBTN_Click" OnClientClick="setMyHiddenField('Ram')"/>
<asp:HiddenField ID="HiddenField" runat="server" />
=================================================
aspx.cs文件内部
protected void CommitBTN_Click(object sender, EventArgs e)
{
Session["ClickedFlag"] = HiddenField.Value;
Response.Write(Session["ClickedFlag"]);
}
很容易用你的价值来替换"Ram"。)
你可以很容易地将Ram更改为temp1:
setMyHiddenField('temp1')
或者,您可以在CommitBTN按下之前对另一个控制事件调用此函数
-
使用
Hidden Field
控件。 -
在按钮
Client
上将Hidden Field
更新为1单击。 -
更新
Page Load' event. The Value will be 1 then update the Session variable and set the
隐藏字段value to 0 underneath the
会话变量`Update中的Session Value
。 -
使用
Page Load
事件的原因是,根据page life cycle
单击Button
时,PreInit、Init、InitialComplete、PreLoad、Load等页面事件在Button
控件的execution
之前执行。
Page events
执行如下。。
- Preinit
- Init
- InitComplete
- 预加载
- 负载
- 控制事件
- 加载完成
- 预渲染
希望这能帮助你。。。