I have applied remote validation to Quantity filed request must be less than the available in database field when I use one textbox the validation shows but when I use dynamic table as list model the validation not fire.
Public partial class StrRequestDetails
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ReqDetailNo { get; set; }
public int ReqNo { get; set; }
[DisplayName("Category Code")]
[Required(ErrorMessage = "This Category Code Field is required.")]
public int CategoryCode { get; set; }
public int? DirectToPur { get; set; }
[DisplayName("Item Code")]
[Required(ErrorMessage = "This Item Code Field is required.")]
public int ItemCode { get; set; }
public int UnitCode { get; set; }
[Remote(action: "VerifyQuntity", controller: "Store", AdditionalFields = nameof(ItemCode), ErrorMessage = "Quantity must be Less than availability in Store")]
[Required, Range(1, 150, ErrorMessage = "Please enter a value bigger than {1}")]
[DisplayName("Item Quantity")]
public int? ItemQuantity { get; set; }
}
This is my View that have loop
@for(int i =0; i< Model.StrRequestDetails.Count; i++)
{
<tr>
<td><select class="form-control" asp-for="@Model.StrRequestDetails[i].CategoryCode" asp-items="@ViewBag.ListofCategory" onchange='Change(this)'>
<option value="">---Select Category---</option>
</select>
<span asp-validation-for="@Model.StrRequestDetails[i].CategoryCode" class="text-danger"> </span> </td>
<td><select class="form-control" asp-for="@Model.StrRequestDetails[i].ItemCode" id="ItemCodes"></select>
<span asp-validation-for="@Model.StrRequestDetails[i].ItemCode" class="text-danger"></span> </td>
<td>
<input class="form-control" asp-for="@Model.StrRequestDetails[i].ItemQuantity" />
<span asp-validation-for="@Model.StrRequestDetails[i].ItemQuantity" class="text-danger"></span> </td>
<td><button type="button" class="btn btn-primary" id="btnremove-@i" onclick="DeleteItem(this);">Delete</button> </td>
</tr>
}
This is my function to check the quantity inserted with database
[AcceptVerbs("get", "post")]
[AllowAnonymous]
public JsonResult VerifyQuntity(int ItemQuantity, int ItemCode)
{
var qutity = _context.StrItemCodes.FirstOrDefault(e => e.ItemCode== ItemCode);
bool result = true;
if(ItemQuantity > qutity.TotalQuaAva)
{
result = false;
}
return Json(result);
}