So if you post empty string to a controller like this
<input type="text" value="" name="idList">
and try to bind it to a List very strange stuff occurs
Does anybody faced this issue?
Why it adds default int value to a list?
No, this is not strange, nor is it unexpected. The problem here is that you don't understand the difference between a reference type (string) and a value type (int) and what their default values are.
An int cannot be null, and must always have a value. In this case, the model binder is trying to convert a blank string to your list and failing, so it creates a "default" value for the type, which for int is 0 (since it can't be null). The model binder always uses the default value for the type if it fails to convert, which for nullable types is null, but for value types is whatever it's default is.
Simultaneously, you should have an Error placed in your ModelState.Errors list that informs you about this error. If you want null, then you need a List nullable int.