验证消息不会出现在ASP.NET MVC

时间:2018-03-26 09:24:02

标签: asp.net-mvc validation data-annotations validationmessage

我使用ASP.NET MVC进行表单验证。我有一页" 用户"它有两个名为" adduser "表格和" edituser " form.I尝试对两个表单的m.user.firstName属性应用相同的验证消息。

添加用户表单:

<form id="addUserForm" method="post" class="form-horizontal">
@Html.TextBoxFor(m => m.user.FirstName, new { @class = "form-control-modal", @id = "fNameEditVal" })
@Html.ValidationMessageFor(m => m.user.FirstName, "")
</form>

修改用户表单:

<form id="editUserForm" method="post" class="form-horizontal">
@Html.TextBoxFor(m => m.user.FirstName, new { @class = "form-control-modal", @placeholder = "", @id = "fNameAddVal", @required = "required"  })
@Html.ValidationMessageFor(m => m.user.FirstName, "")
</form>

但是当我提交添加用户的表单而不在该字段中写入任何文本时,它会正确显示验证消息&#34;请输入您的名字&#34;但是当我提交编辑用户表单时,它不会显示任何消息。当我将@Html.TextBoxFor更改为@Html.EditorFor时,邮件会完美显示。

1 个答案:

答案 0 :(得分:2)

我建议对页面进行重组,因为你不能为同一个属性提供2个文本框(正如Stephen建议的那样)。

我会有以下内容:

  • Partial View在添加和修改之间使用公共表单字段(TextBoxFor等)。

  • 一个View for add(这可以是一个弹出窗口),它是强有力的模型,包括有效的JS脚本等,并包含您的表单Partial View

  • 一个View for edit(再次,在弹出窗口中使用),它是强有力的模型,包括validatiin JS脚本等,并包含您的表单Partial View。此外,这将为Hidden提供Id字段(或者您的主键是该对象的任何内容)

...然后,根据您的操作,您可以通过JS调用添加或编辑操作来弹出。