我正在使用带有c#的asp.net,我有一个数据字段FID是一个主键,如果我有一个FID为'm001',下次如果我把相同的值作为'm001'它应该给出一个验证问题,我需要代码,但截至目前我尚未提供验证摘要。
我的asp.net代码是
<asp:ValidationSummary ID="ValidationSummary1" runat="server"
ShowMessageBox="True" DisplayMode="BulletList"
HeaderText="Validation issues" ShowSummary="False" ValidationGroup="Validation"/>
<h3> Create New User </h3>
<table>
<tr>
<td>
<asp:Label ID="Label5" runat="server" Text="Faculty ID"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtfid" runat="server" Height="20px" Width="128px"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label1" runat="server" Text="Username"></asp:Label></td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ErrorMessage="Please enter the username" ControlToValidate="txtuser1" Display="None" ValidationGroup="Validation" SetFocusOnError="true"></asp:RequiredFieldValidator>
<td>
<asp:TextBox ID="txtuser1" runat="server" Height="20px" Width="128px" />
</td>
</tr>
<tr>
<td>
我需要一个验证码,这样如果我重复相同的FID,那么它应该在弹出的窗口中给出错误信息
答案 0 :(得分:0)
请理解Google中的primary key详细信息。
如果为主键int sql表设置Is Identity=Yes
,那么它会自动递增值,不需要从代码中传递值。并且不需要任何代码来满足此要求。
因此,您的表格将生成主键:1,2,3,4,5,6,......
并且您可以在显示primarykey
时格式化主键值:例如M001 ,M002,M003,M004.....M011..etc
因此,减少复杂和长度的逻辑代码并减少数据库调用以获得良好性能是有帮助的。
答案 1 :(得分:0)
当您尝试在FID上设置主键时,您需要将其自动增量属性设置为"TRUE"
和 IsIdentity = "Yes"
然后在你的代码隐藏中执行如下所示的操作:
if(ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
//Show Duplicate message here
}
else
{
//Do insertion here
}
答案 2 :(得分:0)
您可以使用CustomValidator。只需从工具箱中删除一个名为txtfid的文本框旁边的CustomValidator,并设置其ControlToValidate
属性。然后,为其Server_Validate
事件创建一个处理程序。在此方法中,您应检查在txtfid中输入的值是否唯一。我不知道你如何做数据库的东西,但如果你使用LINQ to SQL,你会有类似的东西:
protected void CustomValidator2_ServerValidate(object source, ServerValidateEventArgs args)
{
TestDBDataContext db = new TestDBDataContext();
args.IsValid = (db.Faculty.Count(x => x.FID == args.Value) == 0);
}
这是一个非常简单的例子。如果不希望用户在文本框旁边看到与CustomValidator关联的错误消息(仅在摘要中显示的消息),请将其Display
属性设置为None
。
答案 3 :(得分:0)
您可以使用SQLException类捕获主键异常。当代码捕获此类异常时,请检查异常编号。
如果异常编号为2627,则可以阻止用户插入记录。请查看此链接
http://www.gyansangrah.com/ArticleContent.aspx?ID=catch_primary_key_violation_exception_in_ado_net
如果您需要其他信息,请告诉我