当前位置:编程学习 > C#/ASP.NET >>

“踩一下”与“顶一下”的问题

这个问题困扰了我很久了。代码是从网上下过来的,试了一下。可以出现问题:红色字部分,跳错说“字符串格式错误”

protected void FormView1_ItemCommand(object sender, FormViewCommandEventArgs e)    
        {        
            switch (e.CommandName.ToUpper())        
        {            
                case "DING":               
                    Ding(true);                
                    break;            
                case "CAI":                
                    Ding(false);                
                    break;        
            }    
        }    
    private void Ding(bool isDing)    
        {        
            string user;        
            //判断是否为匿名用户        
            if (User.Identity.AuthenticationType == "Forms" && User.Identity.IsAuthenticated)        
            {            
                user = User.Identity.Name;        
            }        
            else        
            {            
                user = Request.UserHostAddress;        
            }        
            SqlDataSource sqlds = new SqlDataSource();        
            sqlds.ConnectionString = ConfigurationManager.ConnectionStrings["cultureConnectionString"].ConnectionString;       
            sqlds.SelectCommand = string.Format("exec sp_Ding {0},'{1}',{2}",Request.QueryString["blogid"].ToString(),user,isDing ? "1" : "0");        
            DataView dv = sqlds.Select(DataSourceSelectArguments.Empty) as DataView;       
            if (dv[0][0].ToString() == "1")        
            {            
                (FormView1.FindControl("ltInfo") as Literal).Text = "谢谢支持";                        
                Button btn = FormView1.FindControl(isDing ? "BtnDing" : "BtnCai") as Button;           
                //截取原来的顶或踩的次数,然后加1            
                int newDingCount = int.Parse(btn.Text.Substring(btn.Text.IndexOf("(")+1, btn.Text.IndexOf(")") - btn.Text.IndexOf("(") -1)) + 1;            
                //给按钮重新赋值            
                btn.Text = (isDing ? "顶一下(" : "踩一下(") + newDingCount + ")";        
            }        
            else if(dv[0][0].ToString() == "0")        
            {            
                (FormView1.FindControl("ltInfo") as Literal).Text = "你已进行过此操作";        
            }    
        }
--------------------编程问答-------------------- substring的第二个参数有问题. 如果btn.Text.IndexOf("(")= 0的话,那么再减一就变成-1了,就会报错.符合错误信息提示,看你的程序,应该像第一个参数一样也是+1. --------------------编程问答-------------------- --------------------编程问答-------------------- 应该是处理后的字符串不是合法整数格式的字符串,即int.Parse方法的参数错误。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,