gdoron gdoron - 2 months ago 14x
C# Question

Testing ModelState is always valid in mvc

When testing my controller's actions the ModelState is always valid.

public class Product
public int Id { get; set; }

public string Name { get; set; }

public string Description { get; set; }

public decimal Price { get; set; }

And my controller.

public class ProductController : Controller
public ActionResult Create(Product product)
if (ModelState.IsValid)
// Do some creating logic...
return RedirectToAction("Display");

return View(product);

And test:

public TestInvalidProduct()
var product = new Product();
var controller = new ProductController();
//controller.ModelState.IsValid == true

Why the modelState is valid when the product doesn't have a name, Description and price?


Validation happens when the posted data is bound to the view model. The view model is then passed into the controller. You are skipping part 1 and passing a view model straight into a controller.

You can manually validate a view model using