I'm developing an ASP.NET MVC 5 application with C# and .NET Framework 4.7.
On my view I have this code:
<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>
I have a button that add new rows to the table with jQuery.
I need to check if ProductCode
is unique (all products must have an unique product code). I did it with jQuery using a dictionary equivalent data structure but I'm not sure if I can do it with an ASP.NET validation.
I want to show a message like the message it shows when ProductCode
field is empty.
The model I'm using in this view is:
public class CreateProductViewModel
{
public byte LawId { get; set; }
public IList<Models.Products> Products { get; set; }
public CreateProductViewModel()
{
Products = new List<Models.Products>();
}
}
And Products
has these validations:
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; }
}
Is there a way to add a validation to validate that all Product's codes are unique on client side?
On my database table I have this constraint, but it is on server side:
ALTER TABLE [dbo].[Product]
ADD CONSTRAINT [UNQ_PRODUCTCODE_PRODUCT]
UNIQUE (ProductCode)