我有一个将复杂对象作为输入的动作。我希望能够使用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查询字符串或表单集合)?
答案 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
,您可以使用==null
或HasValue
来检查
public ActionResult Index(DataFilterInput filter )
{
if (!filter.Top.HasValue )
filter = new DataFilterInput { Top = 100 };
var model = new IndexModel();
return View(model);
}