0

我在 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,它应该在弹出窗口中给出错误消息

4

4 回答 4

0

您可以使用 SQLException 类捕获主键异常。当代码捕获这种类型的异常时,检查异常号。

如果异常编号是 2627,那么您可以阻止用户插入记录。请检查此链接

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

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

于 2013-09-25T06:23:18.190 回答
0

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

主键是一个自动递增的字段

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

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

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

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

于 2013-09-25T05:54:22.880 回答
0

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

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

if(ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
    {
        //Show Duplicate message here
    }
    else
    {
         //Do insertion here
    }
于 2013-09-25T05:54:59.447 回答
0

您可以使用 CustomValidator。只需从工具箱中删除一个 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);
}

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

于 2013-09-25T05:58:12.537 回答