我的数据输入页面有两个问题: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”;
}
答案 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