ASP.NET MVC - 当参数为null时绑定空集合

时间:2012-01-03 09:52:37

标签: asp.net-mvc

我有几种动作方法与IList类型的参数。

public ActionResult GetGridData(IList<string> coll)
{
}

默认行为是当没有数据传递给action方法时,参数为null。

有没有办法获得一个空集合而不是null应用程序?

2 个答案:

答案 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
}