我有几种动作方法与IList类型的参数。
public ActionResult GetGridData(IList<string> coll)
{
}
默认行为是当没有数据传递给action方法时,参数为null。
有没有办法获得一个空集合而不是null应用程序?
答案 0 :(得分:5)
嗯,你可以这样做:
coll = coll ?? new List<string>();
或者您需要实现一个ModelBinder,它将创建一个空列表而不是返回null。 E.g:
public EmptyListModelBinder<T> : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var model = base.BindModel(controllerContext, bindingContext) ?? new List<T>();
}
}
接线为:
ModelBinders.Binders.Add(typeof(IList<string>), new EmptyListModelBinder<string>());
我可能会坚持使用参数检查......
答案 1 :(得分:1)
只需自己动手
public ActionResult GetGridData(IList<string> coll)
{
if(coll == null)
coll = new List<String>();
//Do other stuff
}