asp.net 中主键的验证问题

本文关键字:验证 问题 net asp | 更新日期: 2023-09-27 18:32:38

我正在将 asp.net 与 c# 一起使用,并且我有一个数据字段 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,那么它应该在弹出窗口中给出错误消息

asp.net 中主键的验证问题

当您尝试在 FID 上设置主键时,您需要将其的自动增量属性设置为 "TRUE"IsIdentity= "Yes"

然后在代码隐藏中执行如下所示的操作:

if(ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
    {
        //Show Duplicate message here
    }
    else
    {
         //Do insertion here
    }

您可以使用 CustomValidator。只需从工具箱中删除一个名为 txtfid 的文本框旁边的自定义验证器,并设置其 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);
}

这是一个非常简单的例子。如果不希望用户在文本框旁边看到与自定义验证程序关联的错误消息(消息仅在摘要中可见),请将其Display属性设置为 None

请了解 Google 中的主键详细信息。

主键是 自动递增字段 。

如果你为主键int sql表设置了Is Identity=Yes,那么它会自动递增值,不需要从代码中传递值。 并且不需要任何代码来满足此要求。

所以你的表将生成的主键是:1,2,3,4,5,6,......

并且您可以在显示primarykey时格式化主键值:如M001 ,M002,M003,M004.....M011..etc

因此,它有助于减少复杂和长度的逻辑代码,并减少数据库调用以获得良好的性能。

可以使用 SQLException 类捕获主键异常。当代码捕获此类异常时,请检查异常编号。

如果异常编号为 2627,则可以阻止用户插入记录。请查看此链接

http://www.gyansangrah.com/ArticleContent.aspx?ID=catch_primary_key_violation_exception_in_ado_net

如果您需要其他信息,请告诉我