在我的第一个asp.net mvc4项目中,我试图在我的四个表单中对同一页面应用一些验证测试。每个表单允许我在我的表中创建一个不同类型的项目(dataBase) ,所以我使用了由实体框架生成的相同模型,并且为了验证我使用了与我生成的模型同名的部分类,并且我插入了数据注释,例如错误消息所需。我的问题是当我提交一个表格,将所需的字段留空时,会显示所有表格的相应验证错误消息,而不仅仅是我提交的表格。请有人告诉我如何解决这个问题?
答案 0 :(得分:1)
如果您在(例如)属性RequiredAttribute
上有Name
并且在回发时为null,则会为该属性添加验证错误。如果您检查为表单生成的html,您将看到类似的内容(假设您使用@Html.ValidationMessageFor(m => m.Name)
)充当与Name
<span class="field-validation-valid" data-valmsg-for="Name" data-valmsg-replace="true"></span>
请注意..data-valmsg-for="Name"..
。由于您使用相同的模型渲染4个相同的表单,为属性Name
生成4个输入,因此将有4个相应的验证错误。
您渲染4种相同形式的方法没有意义,因为您只能发回一个。我建议您考虑使用包含ProjectType
属性的视图模型并渲染DropDownList,以便用户可以选择项目类型。然后只需要一个表单,在提交时,获取所选的ProjectType
并使用它来做出保存数据所需的任何决定。
答案 1 :(得分:0)
只需以这种方式构建您的视图: -
@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post, new { @Id = "Form1" }))
{
..........
..........
<button type="submit">Update this stuff</button>
}
@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post, new { @Id = "Form2" }))
{
..........
..........
<button type="submit">Update this stuff</button>
}
在上面的例子中提交&#34; Form1&#34;与&#34; Form1&#34;相关的模型验证;将触发和#34; Form2&#34;。
的相同案例