我的网站如何知道我点击了哪个按钮?

时间:2014-12-10 09:18:49

标签: c# asp.net cookies imagebutton

我在ASP.NET中的网站有问题。我的应用程序包含一些能够更改的按钮(图像按钮)。例如:当我按下一个空按钮时,我希望能够在其中放置图片和网站。我用popupbox做了这个。

我遇到的问题:

当我试图给按钮2一个图像和一个网站时,它给按钮1一个图像和网站,因为我告诉它:

 public partial class Ingelogd : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Image1_Click(object sender, ImageClickEventArgs e) 
    {
        if (DropDown.SelectedItem.Value == "Youtube")
        {
            Btn_1.ImageUrl = "~/Images/Youtube.png";
            Btn_1.PostBackUrl = ("http://www.youtube.com");
            Btn_1.OnClientClick = "";
        }
        else
        { 

        }

    }

现在我实际上想要Btn_2一样,但是我必须编写完全相同的代码但是将Btn_1更改为Btn_2。这是不可能的,因为我想要19个网站(youtube但也有facebook,twitter等)我也将有19个按钮(目前我只有Btn_1和Btn_2)。这意味着我必须制作19 * 19 = 361个代码。我假设有一种方法可以为此制作子程序。我的老师还告诉我,我可以使用cookies来点击按钮,但我不知道如何用图像按钮制作一个cookie。

解决此问题的最佳解决方案是什么?

我也在这里有想要查看该代码的ASP.NET代码。

    <title>Ingelogd</title>
<script type="text/javascript">
            <!--
    function toggle_visibility(id) {
        var e = document.getElementById(id);
        if (e.style.display == 'block')
            e.style.display = 'none';
        else
            e.style.display = 'block';
    }
            //-->
        </script>
<style type="text/css">
            #popupBoxOnePosition{
                top: 0; left: 0; position: fixed; width: 100%; height: 120%;
                background-color: rgba(0,0,0,0.7); display: none;
            }
            .popupBoxWrapper{
                width: 550px; margin: 50px auto; text-align: left;
            }
            .popupBoxContent{
                background-color: #FFF; padding: 15px;
            }  


</style>

</head>
<body>
    <form id="form1" runat="server">
    <div>
    Dit is de pagina als je ingelogd bent.
    </div>
    <div id="popupBoxOnePosition">
            <div class="popupBoxWrapper">
                <div class="popupBoxContent">
                    <h3>Instellingen</h3>
                    <p>Kies uit een van de volgende links.</p>
                    <asp:DropDownList ID="DropDown" runat="server">
                <asp:ListItem >Select</asp:ListItem>
                <asp:ListItem >Youtube</asp:ListItem>
                <asp:ListItem >Facebook</asp:ListItem>
            </asp:DropDownList>
                    <br />
                    <asp:ImageButton ID="Button1" runat="server" 
                    OnClick="Image1_Click"/>
                    <br />
                    <asp:Button ID="Button_afsluiten" runat="server" Height="48px" OnClientClick="toggle_visibility('popupBoxOnePosition');return false;" Text="Afsluiten" />
                </div>

            </div>
        </div>
        <asp:ImageButton ID="Btn_1" runat="server" Height="48px" OnClientClick="toggle_visibility('popupBoxOnePosition');return false;" 
 ImageUrl="" />
 <asp:ImageButton ID="Btn_2" runat="server" Height="48px" OnClientClick="toggle_visibility('popupBoxOnePosition');return false;" 
 ImageUrl="" />


   </form>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

您可以尝试向DropDownList添加属性并使用它。例如,添加两个新属性ImageUrl和SiteUrl。您的代码应该是:

protected void Image1_Click(object sender, ImageClickEventArgs e) 
{
    Btn_1.ImageUrl = DropDown.Attrubutes["ImageUrl"];
    Btn_1.PostBackUrl = DropDown.Attrubutes["SiteUrl"];
    Btn_1.OnClientClick = "";
}

答案 1 :(得分:0)

我从来没有使用过asp,但大多数代码只是简单的c#,所以我应该很好。 制作19个单独的函数,每个按钮一个,并动态添加图像和URL而不是使用ifs:

protected void Image1_Click(object sender, ImageClickEventArgs e) 
{
    String val = DropDown.SelectedItem.Value;
    Btn_1.ImageUrl = "~/Images/" + val + ".png";
    Btn_1.PostBackUrl = "http://www." + val + ".com";
    Btn_1.OnClientClick = "";
}

如果你想要所有按钮都有1个功能,你必须给你所有的按钮Name并检查功能内的发件人姓名。