Reputation: 1873
I've couple of action methods with parameters of IList type.
public ActionResult GetGridData(IList<string> coll)
{
}
The default behavior is when no data are passed to action method the parameter is null.
Is there any way to get an empty collection rather then null application wide ?
Upvotes: 6
Views: 2343
Reputation: 5605
simply do it yourself
public ActionResult GetGridData(IList<string> coll)
{
if(coll == null)
coll = new List<String>();
//Do other stuff
}
Upvotes: 1
Reputation: 61617
Well, you could either do this:
coll = coll ?? new List<string>();
Or you would need to implement a ModelBinder that will create an empty list instead of returning null. E.g.:
public EmptyListModelBinder<T> : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var model = base.BindModel(controllerContext, bindingContext) ?? new List<T>();
}
}
And wired up as:
ModelBinders.Binders.Add(typeof(IList<string>), new EmptyListModelBinder<string>());
I'd probably stick with the argument check though...
Upvotes: 6