我正在尝试根据用户选择的六个按钮中的哪一个将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);
}
等...
我在发件人对象上放了一个监视器,当选择粉红色按钮时,分配给发件人的值会读取 {文本= “粉红”} 但是,当我逐步完成SetCSS方法中的if语句时,我来到了 else if(sender.ToString()==“Pink”) 条件不满足,而不是将样式首选项设置为3,程序将传递到语句的末尾,最后总是为属性赋值为0.
我做错了什么? 非常感谢帮助...
答案 0 :(得分:2)
您需要使用sender.Id.ToString()
在ASP.NET按钮上调用sender.ToString()
将返回“System.Web.Ui.Button”或类似内容。
粘贴与您设置按钮的方式相关的代码,我会更多地澄清我的答案,因为您可能需要ID或文字,具体取决于您在按钮上设置名称的方式。
实际上,您可以将此代码重构为更简单。
您应该将所有按钮上的Click
事件映射到SetCSS()
。有很多分散的方法只能打电话是没用的。
答案 1 :(得分:1)
更改if / else块以检查sender.Text
if (sender.Text.ToString() == "Blue")
{
setCss.StylePreference = 0;
}
并为其余陈述做同样的事。