2010-11-08 146 views
0

我在我的数据输入页面有两个问题:probml 1)虽然我正在做客户端验证,为什么指针会在页面后面编码..我有一个名为amount的文本字段,如果该字段是空我是一个警报消息,并专注于该领域。但是在页面后面自动控制代码: decimal amount = Convert.ToDecimal(txtAmount.Text);这里我得到了“当我输入重复值时,我在等待“This id already exists,please try with another id”这样的消息,但我得到的是像主键冲突那样的excetpion .........这是代码..在javascript中需要帮助

 if (!Page.IsValid) 
      return; 
     int sum = 0; 
     ContactPersonBO contactpersonbo = new ContactPersonBO(); 
     string personid = txtPersonid.Text; 
     decimal amount = Convert.ToDecimal(txtAmount.Text); 
     try 
     { 

      contactpersonbo.PersonID = personid;    
      contactpersonbo.Amount = amount;   

      sum = ontactpersonbo.InsertPerson(); 
      if (sum > 0) 
      { 
       lblMessage.Text = "person has been succesfully added.”;    

      } 
      else 
      { 

       lblMessage.Text = "This person already exists, please try with otherid”; 
      } 

     } 
     catch (Exception ex) 
     { 
      lblMessage.Text = ex.Message.ToString(); 
     } 

注意:在这里控制是从来没有来到这个部分:

else 
    { 

     lblMessage.Text = "This person already exists, please try with otherid”; 
    } 

回答

1

关于你的第一个问题,你应该为了防止默认处理发生和页面从onclick的处理器返回false提交:

<asp:Button ID="btnSave" runat="server" Text="Save" Width="64px" 
    Font-Bold="true" OnClientClick="return validate()" onclick="btnSave_Click" /> 

关于你的第二个问题,它看起来如果您的InsertPerson()方法正在抛出异常,而不是返回0(如果此人已经存在)。从您在下面发布的代码中,似乎该方法不会对新人员的存在进行任何检查。您可能想要使用例如一个select查询。

+0

你好这里是personBO类方法的标识: – sunit 2010-11-08 16:39:58

+0

公众诠释InsertPerson(){ PersonDAL人=新PersonDAL(); return person.InsertPerson(this); } – sunit 2010-11-08 16:40:21

+0

并从DAL层方法返回:return oCommand.ExecuteNonQuery(); – sunit 2010-11-08 16:45:20

0

可能的txtAmound不支持可解析的sring(它可能是空的,或者小数分隔符不会保留在您正在使用的设置中) 您可以使用Decimal.TryParse来代替.bear记住它只是没有'牛逼引发异常,如果字符串不是在第二种情况下正确的格式

http://msdn.microsoft.com/en-us/library/system.decimal.tryparse.aspx

我不知道你DAL(数据访问层),但我能猜到一个表/对象,你正在尝试插入这个人有一个主键约束。 也许你正在使用已被保存