MVC5 - 如何知道动作输入是否完全为空

时间:2017-05-08 21:52:52

标签: asp.net-mvc

我有一个将复杂对象作为输入的动作。我希望能够使用POST数据或GET请求中的查询字符串填充任何值。这很好。

如果没有提供用户输入,我也想提供默认值,但是,这不起作用,因为过滤器永远不会为空,即使GET请求中没有查询字符串参数。相反的是,MVC只调用模型的默认构造函数而不设置任何属性而不是给我一个null。

        public ActionResult Index(DataFilterInput filter = null)
        {
            if (filter == null)
                filter = new DataFilterInput { Top = 100 };
            var model = new IndexModel();
            return View(model);
        }

我怎么知道在没有用户输入的情况下是否应该默认值(我不想进入Request查询字符串或表单集合)?

2 个答案:

答案 0 :(得分:0)

为您的对象提供此示例可用的默认值

public class SearchModel
{
  public bool IsMarried{ get; set; }


public SearchModel()
  { 
    IsMarried= true;
  }
}

如果你想验证模型

 public ActionResult Index(DataFilterInput filter = null)
        {
         if (!ModelState.Isvalied)
                filter = new DataFilterInput { Top = 100 };
            var model = new IndexModel();
            return View(model);
        }

答案 1 :(得分:0)

你可以判断为nullable

public int? Top {get;set;}

因此,如果没有提供最高价值,则默认为null,您可以使用==nullHasValue来检查

public ActionResult Index(DataFilterInput filter ) 
  { 
    if (!filter.Top.HasValue ) 
        filter = new DataFilterInput { Top = 100 }; 
    var model = new IndexModel(); 
    return View(model);
   }