我在设置验证消息时遇到问题。我在一个控件中有两个Model,两个Model都具有相同的属性“amount”。
因此,为一个Model.amount设置验证也会反映到其他Model.amount。我试图将不同的ID传递给两者但不起作用。
<%= Html.TextBox("amount", Model.amount, new { id = "Pamount" })%>
<%=Html.ValidationMessage("Pamount", " ")%>
<%= Html.TextBox("amount", Model.amount, new { id = "Eamount" })%>
<%=Html.ValidationMessage("Eamount", " ")%>
我正在设置
if (obj.amount.ToString() == "0")
modalState.AddModelError("Pamount", "");
但验证也适用于Eamount
我该怎么办?
答案 0 :(得分:0)
我认为在添加模型错误时,您可以按名称访问字段,而不是ID。所以你想做
ModelState.AddModelError("amount", "");
此外,我建议给文本框添加不同的名称,以便在只有一个导致错误时不会给它们添加错误,这可能会引起一些混淆。
答案 1 :(得分:0)
根据控件的名称应用验证突出显示。名称必须反映属性名称才能使模型绑定起作用。因此,您不能拥有两个具有相同名称的控件,并且验证突出显示正常工作。因此,您需要为控件指定不同的名称。有两种方法可以做到这一点:
为不同的金额创建一个具有两个不同属性的演示模型。在分别显示表单或处理帖子时,将表示模型转换为您正在更新的实际对象。
使用两个对象的子属性创建单个模型,然后使用点表示法访问这两个数量。
像这样:
<%= Html.TextBox("Foo.amount", Model.Foo.amount, [...]
<%= Html.TextBox("Bar.amount", Model.Bar.amount, [...]