验证消息

时间:2009-03-19 12:21:10

标签: asp.net html asp.net-mvc validation

我在设置验证消息时遇到问题。我在一个控件中有两个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

我该怎么办?

2 个答案:

答案 0 :(得分:0)

我认为在添加模型错误时,您可以按名称访问字段,而不是ID。所以你想做

ModelState.AddModelError("amount", "");

此外,我建议给文本框添加不同的名称,以便在只有一个导致错误时不会给它们添加错误,这可能会引起一些混淆。

答案 1 :(得分:0)

根据控件的名称应用验证突出显示。名称必须反映属性名称才能使模型绑定起作用。因此,您不能拥有两个具有相同名称的控件,并且验证突出显示正常工作。因此,您需要为控件指定不同的名称。有两种方法可以做到这一点:

  1. 为不同的金额创建一个具有两个不同属性的演示模型。在分别显示表单或处理帖子时,将表示模型转换为您正在更新的实际对象。

  2. 使用两个对象的子属性创建单个模型,然后使用点表示法访问这两个数量。

  3. 像这样:

    <%= Html.TextBox("Foo.amount", Model.Foo.amount, [...]
    <%= Html.TextBox("Bar.amount", Model.Bar.amount, [...]