Reputation: 47
I tried to put a ValidationMessageFor
in my view to control data but it's not working and data goes to my post action.
Here is my model class:
public enum CustomerType
{
JuridicalPerson,
NaturalPerson
}
public class Customer
{
[Key]
[DisplayName("ID")]
public int CustomerId { get; set; }
[Required(ErrorMessage = "Please enter your first name")]
[DisplayName("First name")]
[DataType(DataType.Text)]
public string FirstName { get; set; }
[Required(ErrorMessage ="Please enter your last name")]
[DisplayName("Last name")]
[DataType(DataType.Text)]
public string LastName { get; set; }
[Required(ErrorMessage ="Please choose your customer type")]
[DisplayName("Customer type")]
public CustomerType CustomerType { get; set; }
and here is my create customer view:
@model Contracts.Models.Customer
@using (Html.BeginForm())
{
<div class="box">
<div class="input-container">
@Html.LabelFor(model => model.FirstName)
<br />
@Html.EditorFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
</div>
<div class="input-container">
@Html.LabelFor(model => model.LastName)
<br />
@Html.EditorFor(model => model.LastName)
@Html.ValidationMessageFor(model => model.LastName)
</div>
<div class="input-container">
@Html.LabelFor(model => model.CustomerType)
<br />
@Html.EnumDropDownListFor(model => model.CustomerType, "Select a type", new {@class ="input-container" })
@Html.ValidationMessageFor(model => model.CustomerType)
</div>
<input class="btn" type="submit" value="Create" />
</div>
}
and finally this is my customer controller and its action for create a customer:
[HttpPost]
public ActionResult Create(Customer customer)
{
//db is my database context
db.Customers.Add(customer);
db.SaveChanges();
return RedirectToAction("Index");
}
actually with html helper validation in my view ,empty inputs should give an error and not goes to my action but is's not working
I'll appreciate if you help me
Upvotes: 2
Views: 73
Reputation: 136
try using
if (ModelState.IsValid){
db.Customers.Add(customer);
db.SaveChanges();
return RedirectToAction("Index");} return Page();
Upvotes: 1