ASP.NET:如何在单击复选框后导航到页面?

时间:2012-09-25 13:52:54

标签: asp.net vb.net checkbox autopostback

当值更改时,我有一些checkboxesdropdownlist我希望在传递新值时刷新页面。我尝试使用autopostback;但是,该值以前已经在url中,所以当回发发生时,值永远不会改变。

示例:

CurrentPage: page.aspx?tab=Home&checkbox=True

然后我取消选中该复选框,以便我转到下一页...

IntendedPage: page.aspx?tab=Home&checkbox=False

但相反,我的autopostback给了我这个页面......

DestinationPage: page.aspx?tab=Home&checkbox=True

因为,我通过页面上的函数处理url的构建。也许到目前为止我做错了什么。如果是这样,我很乐意在我目前的设置上得到纠正。我认为我需要知道的是如何在checkbox.checkchanged事件上加载自定义URL。我希望这是有道理的,如果不是让我知道我会试着澄清它。谢谢!

3 个答案:

答案 0 :(得分:2)

你可以尝试这样的事情(我没有测试过,这只是一个想法)。

 protected void CheckBox1_CheckedChanged ( object sender, EventArgs e )
    {
        string url = "page.aspx?tab=Home&checkbox="+ CheckBox1.Checked.ToString();
        Response.Redirect ( url );
    }

然后在页面上:

<asp:CheckBox ID="CheckBox1" runat="server" 
oncheckedchanged="CheckBox1_CheckedChanged" />

VB.NET转换

Protected Sub CheckBox1_CheckedChanged(sender As Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged
       Dim url = "page.aspx?tab=Home&checkbox=" & CheckBox1.Checked.ToString()
       Response.Redirect(url)
End Sub

答案 1 :(得分:0)

此行为是由viewstate引起的。 checkbox使用它来保留其属性,尤其是checked属性。

实际上,控件和查询字符串之间没有开箱即用的链接。

根据您的需要,您将有两种选择:

    Checked事件中
  • ,构建预期的网址,并将redirect用户添加到此页面。缺点是你“松散”了视图状态,从而控制了状态。
  • 而不是使用回发,使用客户端脚本(jQuery是你的朋友)来隐藏/显示页面的一部分。如果网址很重要,请在网址中使用#,因为它允许保留在同一页面上。

答案 2 :(得分:0)

这很容易通过javascript完成。首先将onclick="checkCheckBox(this);"添加到您的复选框。

<script language = "javascript" type="text/javascript"> 
function checkCheckBox(checkbox) {
        if (checkbox.checked) {
            window.location.href = '../page.aspx?tab=Home&checkbox=True';
        }
        else {
            window.location.href = '../page.aspx?tab=Home&checkbox=False';
        }
    }
</script>

这应该很容易做到。