在javascript中需要帮助

时间:2010-11-08 15:51:51

标签: c# javascript asp.net

我的数据输入页面有两个问题:probml 1)虽然我正在进行客户端验证,但为什么指针会在页面后面进行编码。 如果该字段为空,我有一个名为amount的文本字段我是一个警报消息并专注于该字段。但是不可避免地控制在页面后面的代码:在这一行: 十进制数量= Convert.ToDecimal(txtAmount.Text);这里我得到异常,“输入参数不是正确的格式” 这是javascript代码:

<script type="text/javascript">
function validate()
{
    var value = document.getElementById("txtAmount").value;
    if(value=="")
    {
    alert("Please enterAmount.");
    document.getElementById("txtAmount").focus();   
    return false;        
    }
    else
    {
     return  true;     
     }
}
</script>
<asp:Button ID="btnSave" runat="server" Text="Save" Width="64px" Font-Bold="true" OnClientClick="validate()" onclick="btnSave_Click"/>

Prblm2:当我输入重复值时,我期待像“此ID已经存在,请尝试使用其他ID”这样的消息,但我得到的主要是主键冲突.........这里是代码...

        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”;
    }

2 个答案:

答案 0 :(得分:1)

关于您的第一个问题,您应该从false处理程序返回onclick,以防止进行默认处理并提交要提交的页面:

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

关于您的第二个问题,如果此人已经存在,您的InsertPerson()方法似乎会抛出异常,而不是返回0。从您在下面发布的代码中,似乎该方法不会对新人的存在执行任何检查。您可能希望使用例如添加该测试。 select查询。

答案 1 :(得分:0)

顺便说一句,txtAmound没有合并一个可解析的sring(它可能是空的,或者小数分隔符不会粘在你正在使用的设置上) 你可以使用Decimal.TryParse。记住,如果字符串的格式不正确,它就不会引发异常

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

对于第二种情况我不认识你DAL(数据访问层)但我可以猜测你试图插入那个人的表/对象有一个主键约束。 可能您使用的是已保存的ID