0

我有一个表名 Discount,它具有以下架构:

PK DiscountID int

FK 客户 ID 整数

金额

名称 varchar(50)

所以我显示了与客户相关的所有折扣。每个客户将有 3 条折扣记录。

当我生成表单时,用于编辑的关联文本框的 ID 和名称必须是唯一的才能正确处理。

例子

当我尝试使用 xVal 进行验证时,由于我的字段名称与架构名称“Amount_1”而不是“Amount”不匹配,因此它不会验证该字段。

我怎样才能让它工作?

我不能将所有 3 个折扣合并到唯一客户的一条记录中,因为为了简化示例,我遗漏了一些其他字段。我需要为 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

我玩了一些前缀,这就是可以做到的:

首先,您必须将文本框命名为具有不同的前缀,但具有相同的属性名称“金额”,然后通过为每个前缀调用 Html.ClientSideValidation 三次将 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 回答