1

我正在使用 ASP.NET MVC 进行表单验证。我有一页“用户”,其中有两个名为“ adduser ”表单和“ edituser ”表单的表单。我正在尝试对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>

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

4

1 回答 1

2

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

我会有以下内容:

  • a在添加和编辑之间Partial View具有公共表单字段(等)。TextBoxFor

  • 一个View for add(这可以是一个弹出窗口),它对您的模型进行了强类型化,包括验证 JS 脚本等,并包括您的表单Partial View

  • 一个View for edit(再次,在弹出窗口中使用),它是强类型到您的模型,包括验证 JS 脚本等并包括您的表单Partial View。此外,这将有一个Hidden字段Id(或对象的主键)

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

于 2018-03-26T10:11:10.137 回答