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)
Hi first of all to answer to your question,
Is there a way to add a validation to validate that all Product's codes are unique?
yes there is way..:)
And Here is the way:
[Index("Ix_ProductCode",Order =1,IsUnique =true)]
public string ProductCode { get; set; }
By using index you can achieve it, I personally implemented in my project it worked well.
Useful Link:
https://www.codeproject.com/articles/1130113/best-ways-of-implementing-uniqueness-or-unique-key
Offical explanation of index can be found here : https://msdn.microsoft.com/en-us/library/jj591583(v=vs.113).aspx
Hope the above information was useful, kindly let me know your thoughts or feedbacks
Thanks
Karthik
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With