Question

I am still learning MVC3 and Razor, so this is perhaps a simple question.

On a view I have a DropDownList whose sole purpose is to help filter (via AJAX) a second drop down list:

@Html.DropDownList("Segments", "-- select segment --")

There is a Segments property of the ViewModel that is defined as:

public IEnumerable<SelectListItem> Segments { get; set; }

There is JavaScript that handles the change event for this DropDownList and populates another DropDownList with appropriate values. That other DropDownList is defined like this:

@Html.DropDownListFor(m => m.fafhProdRecId, Enumerable.Empty<SelectListItem>(), "-- select product recommendation --")

This all works fine until I submit. When I submit, I get a validation error on the Segments drop down list!

Now -- there should be absolutely NO validation on the segments DropDownList -- there shouldn't be any client side validation on EITHER drop down list, for that matter.

But when I try to submit, I get the validation error message back:

The value '1' is invalid.

I have no idea why this is happening. I have no idea how to decorate the Segments property to say that it is NOT required. I have no idea how to tell the unobtrusive javascript validator that it is, in fact, being quite obtrusive.

Was it helpful?

Solution

In your ViewModel class add [Bind(Exclude = "Segments")]

From: Using Data Annotations for Model Validation

OTHER TIPS

make sure that your Model has fafhProdRecId as nullable, I imagine it's declared as:

public int fafhProdRecId { get; set; }

change this to:

public int? fafhProdRecId { get; set; }

hopefully, that should resolve the issue as this effectively makes the model field nullable (assuming the db field IS nullable too of course).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top