我正在尝试向我的网站添加一个基本开关,以便在静态布局和响应式布局之间切换。
我的页面底部有两个链接按钮:
while(boolContinue)
他们都有一个非常相似的OnClick事件。
<div id="toggleView">
<asp:linkbutton ID="lbtnMobile" runat="server" Visible="false">Switch to Mobile site</asp:linkbutton>
<asp:linkbutton ID="lbtnFull" runat="server" >Switch to Full site</asp:linkbutton>
</div>
事件应该在类文件(User.vb)中设置一个布尔值在true或false之间,然后保存会话,在回发时,Page_Load事件应该读取此布尔值并使用它来调整Viewport元标记: / p>
protected void lbtnFull_Click(object sender, EventArgs e)
{
c.ViewChange = true;
Session["Customer"] = c;
}
protected void lbtnMobile_Click(object sender, EventArgs e)
{
c.ViewChange = false;
Session["Customer"] = c;
}
然而,当我点击&#34;切换到完整网站&#34;链接按钮,页面将回发但没有任何改变。回复是否会以某种方式过早触发?
答案 0 :(得分:2)
页面加载甚至会在您的点击事件之前发生。参考此here。
这意味着在OnClick处理程序中设置ViewChange之前,您的检查将会发生。
答案 1 :(得分:1)
你应该改变
if (c.ViewChange = false)
到
if (c.ViewChange == false)
要发生的事情。但我认为它不会成为你的期望。因为page_load是在click事件之前执行的。您可以将一些代码从page_load移动到单击事件处理程序。
答案 2 :(得分:1)
当你回发 Page_Load 总是被调用。因此, Page_Load 中提到的代码将始终执行。
protected void Page_Load(object sender, System.EventArgs e)
{
... All your mentioned code will be executed.
}
因此,您在浏览器中当前查看的 HTML 页面中找不到任何更改,因为在回发时,初始内容也已执行。您需要将内容包装在!IsPostBack 中,以使其正常工作。
因此,请按以下方式修改代码。
protected void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostback)
{
... All your mentioned code will be executed during normal load.
}
}
此外,您需要在 LinkButton 点击事件中添加一些额外的代码,即要显示的内容和要隐藏的内容。
答案 3 :(得分:0)
首先,你在Page_Load中的实现并不是很清楚。
尽管如此,这也是我所推荐的,我已经提到过:
希望这会对你有所帮助。