Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多个按钮调用单个方法_C#_Asp.net - Fatal编程技术网

C# 多个按钮调用单个方法

C# 多个按钮调用单个方法,c#,asp.net,C#,Asp.net,我试图根据用户选择的六个按钮中的哪一个,将CSS用户首选项持久化到我的数据库中。 为了做到这一点,我试图为每个按钮点击事件分配一个整数值;单击哪个将把相应的整数作为参数传递给我的数据访问对象以更新数据库 我的方法是这样的: protected void SetCSS(object sender, EventArgs e) { Users setCss = new Users(); if (IsPostBack) {

我试图根据用户选择的六个按钮中的哪一个,将CSS用户首选项持久化到我的数据库中。 为了做到这一点,我试图为每个按钮点击事件分配一个整数值;单击哪个将把相应的整数作为参数传递给我的数据访问对象以更新数据库

我的方法是这样的:

    protected void SetCSS(object sender, EventArgs e)
    {
        Users setCss = new Users();
        if (IsPostBack)
        {
            if (sender.ToString() == "Blue")
            {
                setCss.StylePreference = 0;
            }
            else if (sender.ToString() == "Khaki")
            {
                setCss.StylePreference = 1;
            }
            else if (sender.ToString() == "Night")
            {
                setCss.StylePreference = 2;
            }
            else if (sender.ToString() == "Pink")
            {
                setCss.StylePreference = 3;
            }
            else if (sender.ToString() == "White")
            {
                setCss.StylePreference = 4;
            }
            else if (sender.ToString() == "Yellow")
            {
                setCss.StylePreference = 5;
            }

            setCss.UserLoginName = Session["eMail"].ToString(); // current user
            setCss.SetStylePreference(setCss.UserLoginName, setCss.StylePreference);
        }
在每个按钮的单击事件中:

    protected void btnBlue_Click(object sender, EventArgs e)
    {
        SetCSS(btnBlue, null);
    }

    protected void btnKhaki_Click(object sender, EventArgs e)
    {
        SetCSS(btnKhaki, null);
    }
等等

我在sender对象上放置了一块手表,当选中粉色按钮时,分配给sender的值将显示为 {Text=“Pink”} 但是,当我在SetCSS方法中逐步执行if语句时 else if(sender.ToString()=“粉色”) 不满足该条件,程序将传递到语句末尾,而不是将样式首选项设置为3,最后始终为属性指定值0

我做错了什么?
非常感谢您的帮助…

更改if/else块以检查发件人。Text

if (sender.Text.ToString() == "Blue")
        {
            setCss.StylePreference = 0;
        }

并对其余语句执行相同操作。

更改if/else块以检查发件人。Text

if (sender.Text.ToString() == "Blue")
        {
            setCss.StylePreference = 0;
        }

并对其余语句执行相同操作。

您需要使用
sender.Id.ToString()

在ASP.NET按钮上调用
sender.ToString()
将返回“System.Web.Ui.button”或类似的内容

粘贴与您如何设置按钮相关的代码,我将进一步澄清我的答案,因为您可能需要Id或文本,具体取决于您如何设置按钮上的名称

实际上,您可以将此代码重构为更简单的代码


您应该将所有按钮上的
单击
事件映射到
SetCSS()
。有很多分散的方法只包装调用是没有用的。

您需要使用
sender.Id.ToString()

在ASP.NET按钮上调用
sender.ToString()
将返回“System.Web.Ui.button”或类似的内容

粘贴与您如何设置按钮相关的代码,我将进一步澄清我的答案,因为您可能需要Id或文本,具体取决于您如何设置按钮上的名称

实际上,您可以将此代码重构为更简单的代码


您应该将所有按钮上的
单击
事件映射到
SetCSS()
。有很多散乱的方法只包装调用是没有用的。

因为您正在单步执行代码,您应该能够看到sender.ToString()的值而不是“Pink”,对吧?我怀疑sender.ToString()将是“btnBlue”、“btnPink”等。正如Andrew所建议的,当你一步一步地通过代码时,你应该能够看到值是什么;非常感谢各位;)最好使用带ID的swith/if语句。键入cast sender to button like button btn=(button)sender并使用btn.ID进行切换。由于您正在单步执行代码,您应该能够看到sender.ToString()的值而不是“Pink”,对吧?我怀疑sender.ToString()将是“btnBlue”、“btnPink”等。正如Andrew建议的那样,当你一步一步地通过代码时,你应该能够看到值是什么;非常感谢各位;)最好使用带ID的swith/if语句。键入cast sender to button like button btn=(button)sender,并使用btn.ID.Hi Frazell切换,根据上述注释解决问题;我将if语句子句改为:if(sender==btnBlue)等。。感谢您的回复。@user1748443太棒了。很高兴你的问题解决了。请参阅我编辑的关于重构代码的注释:)嗨,Frazell,问题已根据上面的注释解决;我将if语句子句改为:if(sender==btnBlue)等。。感谢您的回复。@user1748443太棒了。很高兴你的问题解决了。请参阅我编辑的关于重构代码的说明:)