我有一个表名称Discount,它具有以下架构:
PK DiscountID int
FK CustomerID int
金额
名称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; }
}
}
有关如何使其发挥作用的任何想法?
答案 0 :(得分:3)
我玩了一些前缀,这就是这样做的方法:
首先,您必须将文本框命名为具有不同的前缀,但具有相同的属性名称“Amount”,然后通过为每个前缀调用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") %>
希望这有帮助