【问题标题】:Validation Message验证消息
【发布时间】:2009-03-19 12:21:10
【问题描述】:

我在设置验证消息时遇到问题。我在一个控件中有两个模型,并且两个模型都具有相同的属性“数量”。

因此,为一个 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

我该怎么办?

【问题讨论】:

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


    【解决方案1】:

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

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

    此外,我建议为文本框指定不同的名称,这样当只有一个导致错误时,您就不会同时向两个文本框添加错误,这可能会导致一些混乱。

    【讨论】:

      【解决方案2】:

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

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

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

      像这样:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-19
        • 2014-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多