Validation message doesn't appear in ASP.NET MVC

1k Views Asked by At

I am using ASP.NET MVC for form validation. I have one page of "Users" which have two forms named as "adduser" form and "edituser" form.I'm trying to apply same validation message against m.user.firstName property for both forms.

Add user form:

<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>

Edit user 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>

But when I submit the form of add user without writing any text in that field it properly shows the validation message "Please enter your first name " but when I submit the edit user form it will not show any message. When I change @Html.TextBoxFor to @Html.EditorFor, the message is showing up perfectly.

1

There are 1 best solutions below

0
scgough On BEST ANSWER

I would suggest a restructure of the page(s) as you can't have 2 text boxes for the same property (as Stephen suggested).

I would have the following:

  • a Partial View with the common form fields (TextBoxFor etc) between add and edit.

  • a View for add (this can be a pop up) which is strongly typed to your model, includes the validatiin JS scripts etc and includes your form Partial View

  • a View for edit (again, to be used in the pop up) which is strongly typed to your model, includes the validatiin JS scripts etc and includes your form Partial View. In addition, this would have a Hidden field for the Id (or whatever your primary key is for the object)

...then, depending on what you are doing you would call the add or edit action via JS for your pop up.