Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 验证以验证唯一性_C#_Jquery_Asp.net_Asp.net Mvc - Fatal编程技术网

C# 验证以验证唯一性

C# 验证以验证唯一性,c#,jquery,asp.net,asp.net-mvc,C#,Jquery,Asp.net,Asp.net Mvc,我正在用C#和.NETFramework 4.7开发一个ASP.NETMVC5应用程序 在我看来,我有以下代码: <tbody> @for (int index = 0; index < Model.Products.Count; index++) { <tr> <td> <div class="group"> @H

我正在用C#和.NETFramework 4.7开发一个ASP.NETMVC5应用程序

在我看来,我有以下代码:

<tbody>
    @for (int index = 0; index < Model.Products.Count; index++)
    {
        <tr>
            <td>
                <div class="group">
                    @Html.TextBoxFor(m => m.Products[index].ProductCode)
                    @Html.HiddenFor(m => m.Products[index].Law)
                    <div class="mensajeError">@Html.ValidationMessageFor(m => m.Products[index].ProductCode)</div>
                </div>
            </td>
            <td>
                <div class="group">
                    @Html.TextBoxFor(m => m.Products[index].Description, new { @class = "productClass", @style = "max-width:none" })<br />
                    <div class="mensajeError">@Html.ValidationMessageFor(m => m.Products[index].Description)</div>
                </div>
            </td>
            <td>
                <div class="group">
                    @Html.TextBoxFor(m => m.Products[index].Name, new { @class = "productClass" })<br />
                    <div class="mensajeError">@Html.ValidationMessageFor(m => m.Products[index].Name)</div>
                </div>
            </td>
            <td>
                <div class="group">
                    @Html.TextBoxFor(m => m.Products[index].Comment, new { @class = "productClass" })<br />
                    <div class="mensajeError">@Html.ValidationMessageFor(m => m.Products[index].Comment)</div>
                </div>
            </td>
        </tr>
    }
</tbody>
产品
具有以下验证:

public class Products
{
    public int Id { get; set; }

    [Required(ErrorMessageResourceType = typeof(Resources.Resources),
            ErrorMessageResourceName = "ProductCodeRequired")]
    [StringLength(20, ErrorMessageResourceType = typeof(Resources.Resources),
                    ErrorMessageResourceName = "ProductCodeLong")]
    public string ProductCode { get; set; }

    [StringLength(50, ErrorMessageResourceType = typeof(Resources.Resources),
                    ErrorMessageResourceName = "ProductDescriptionLong")]
    public string Description { get; set; }

    public byte Law { get; set; }

    [StringLength(50, ErrorMessageResourceType = typeof(Resources.Resources),
                    ErrorMessageResourceName = "ProductNameLong")]
    public string Name { get; set; }

    [StringLength(100, ErrorMessageResourceType = typeof(Resources.Resources),
                    ErrorMessageResourceName = "ProductCommentLong")]
    public string Comment { get; set; }
}
是否有方法添加验证以验证所有产品的代码在客户端都是唯一的

在我的数据库表上有此约束,但它在服务器端:

ALTER TABLE [dbo].[Product]
    ADD CONSTRAINT [UNQ_PRODUCTCODE_PRODUCT]
    UNIQUE (ProductCode)

嗨首先要回答你的问题

是否有方法添加验证以验证所有产品的代码是否唯一

是的,有办法……)

方法如下:

 [Index("Ix_ProductCode",Order =1,IsUnique =true)]
        public string ProductCode { get; set; }
通过使用索引可以实现它,我个人在我的项目中实现了它,效果很好

有用链接:

 [Index("Ix_ProductCode",Order =1,IsUnique =true)]
        public string ProductCode { get; set; }

可在此处找到索引的官方解释

希望以上信息有用,请告诉我您的想法或反馈

谢谢


Karthik

要检查与其他现有记录相比的唯一性,可以使用
RemoteAttribute
。但要在动态添加新记录时在同一视图中进行额外的唯一性比较,您需要编写自己的自定义验证属性,该属性为客户端和服务器端验证实现
iclientvalidable
。谢谢,您可以使用验证属性,但我想在客户端执行此操作,在我将数据发送到服务器之前。谢谢。您好,我很高兴看到它的帮助。据我所知,我认为我们不能完全在客户端实现检查唯一性的功能,因为要从数据库获取数据,我们无论如何都应该到服务器端。但可能您可以做一件事,捕获上述注释的异常并在客户端上显示错误消息。因此,用户将在客户端看到带有错误消息的同一屏幕。谢谢