2输入,但只验证一个

时间:2013-08-10 13:42:22

标签: c# asp.net-mvc validation

你可以帮我解决这个问题吗? 假设我有一个表格中有一些东西(例如产品),可以添加新产品和编辑现有产品。要求是始终可以看到添加行。我遇到问题时,我点击“编辑”产品,这样我就有两个输入(一个用于编辑,一个用于添加)。当我通过选择保存可编辑行将表单发布到服务器时,我想仅验证编辑行并且不对添加行(暂时为空)执行任何操作。

问题是默认的MVC验证应用于我的添加行输入,其控件变为红色,并显示属性验证消息。我不想看到它们,因为它真的令人困惑。实际上我无法理解为什么会这样。可能是因为MVC无法将空字符串转换为DECIMAL(VIEWMODEL中指向输入的类型)

1 个答案:

答案 0 :(得分:1)

您需要两种不同的表单,一种用于添加项目,另一种用于编辑项目。这些需要指向不同的操作,然后只验证一个对象。

我不确定你的代码是什么样的,但我真的会建议更像下面的内容,你的观点完全分开:

从显示所有“产品”的视图开始。或者你的数据是什么。当您在视图中填充此内容时,您可以为每个个人分配Edit个链接。您只需要一个整体Add Project链接。像这样:

@Html.ActionLink("Add Project", "AddProjectView")
For Each project In Model.Projects
    @Html.ActionLink("Edit", "EditView", New With {.id = project.ProjectID})
    @<div>PropertyName: @Project.Property</div>
Next

现在,您可以将Edit视图与数据视图分开,该视图可以自行处理所有验证。同样,Add Project视图是分开的,并处理自己的验证。成功添加或编辑后,您只需将用户重定向回上方视图,即可显示和更新数据。