0

次のスキーマを持つテーブル名割引があります。

PK 割引 ID int

FK CustomerID int

金額

名前 varchar(50)

そのため、顧客に関連するすべての割引を表示しています。各顧客には 3 つの割引レコードがあります。

フォームを生成するときに、関連付けられたテキストボックスの ID と名前を編集用に生成すると、正しく処理するには一意である必要があります。

xVal を使用して検証しようとすると、フィールド名が「Amount」ではなく「Amount_1」というスキーマ名と一致しないため、フィールドが検証されません。

どうすればこれを機能させることができますか?

例を単純化するために省略した他のフィールドがいくつかあるため、3 つの割引すべてを一意の顧客の 1 つのレコードに結合することはできません。顧客ごとに 3 つの割引を 3 行で設定する必要があります。

ここにいくつかのコードがあります:

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

<table>

<tr> <td> Discount 1 </td> <td> <%= Html.TextBox("Amount_1") %></td></tr> 
<tr> <td> Discount 2 </td> <td> <%= Html.TextBox("Amount_2") %></td></tr>
<tr> <td> Discount 3 </td> <td> <%= Html.TextBox("Amount_3") %></td></tr>

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

</table> 
</form> 

<%= Html.ClientSideValidation<Discount>() %>

ここに私のメタデータ

[MetadataType(typeof(DiscountMetaData))]
    public partial class Discount
    {
        public class DiscountMetaData
        {
            [Required(ErrorMessage = " [Required] ")]
            public string Amount { get; set; }
        }            
    } 

それを機能させる方法についてのアイデアはありますか?

4

1 に答える 1

3

私は接頭辞で少し遊んだことがありますが、これはこれがどのように行われるかです:

最初に、異なるプレフィックスを持つようにテキストボックスに名前を付ける必要がありますが、同じプロパティ名「Amount」を指定してから、プレフィックスごとに Html.ClientSideValidation を 3 回呼び出して、jquery バリデーターを各フィールドにアタッチします。

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

<table>

<tr> <td> Discount 1 </td> <td> <%= Html.TextBox("discount1.Amount") %></td></tr> 
<tr> <td> Discount 2 </td> <td> <%= Html.TextBox("discount2.Amount") %></td></tr>
<tr> <td> Discount 3 </td> <td> <%= Html.TextBox("discount3.Amount") %></td></tr>

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

</table> 
</form> 

<%= Html.ClientSideValidation<Discount>("discount1") %>
<%= Html.ClientSideValidation<Discount>("discount2") %>
<%= Html.ClientSideValidation<Discount>("discount3") %>

お役に立てれば

于 2009-12-02T09:14:40.120 に答える