0

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);
}

0 Answers0