Multiple Row Validation on Field

Dec 1, 2009 at 2:40 PM

I have a table name Discount that has the following schema:

PK DiscountID int

FK CustomerID int

Amount money

Name varchar(50)

 

So I am displaying all the discounts related to the customer. Each customer will have 3 discount records.

When I generate the form the ID's and Name's of the associated textboxes for editing that have to be unique to process correctly.

Example

<input type="text" ID="Amount_1" Name="Amount_1" value="1.00" />

<input type="text" ID="Amount_2" Name="Amount_2" value="1.75" />

<input type="text" ID="Amount_3" Name="Amount_3" value="2.75" />

When I try to validate using xVal, since my field names are not matching the schema name, 'Amount_1' instead of 'Amount', it doesn't validate the field.

How can I get this to work ?

I cant combine all 3 discounts into one record for the unique customer, since there is some other fields i left out for simplfying the example. I need to have 3 discount's for each customer in 3 rows.

Heres some code:

 

<form method="post" action="ProcessUpdate">

<table>

<% int i = 0; %>


<% foreach( var item in Model.Discounts) { %> <tr> <td> Discount <%= i %> </td> <td> <%= Html.TextBox(String.Format("Amount_{0}", i ), item.Amount ) %></td></tr> <% } %>

<tr> <td> <input type="submit" value="submit"/> </td> </tr>

</table> </form>
<%=
Html.ClientSideValidation<Discount>() %>


Here my metadata
[MetadataType(typeof(DiscountMetaData))]
    public partial class Discount
    {
        public class DiscountMetaData
        {
            [Required(ErrorMessage = " [Required] ")]
            public string Amount { get; set; }
        }            
    } 
Any ideas on how to get that to work ?

 

May 26, 2010 at 12:28 PM

using FluentValidator is probably your best bet.