假设我有一个像这样的viewmodel:
public class User
{
public int Id { get; set; }
[Required(ErrorMessage="Username is required")]
public string Username { get; set; }
[Range(0, 255)]
public int Owner { get; set; }
}
页面被提交给它的控制器,我在那里检查ModelState.IsValid,但它没有通过。显然,所有者是必需的。这是为什么?我认为未分配的int的默认值是0.如果我调试应用程序并检查发送到控制器的对象,则该值确实为0.
如果我不想强迫用户输入0,那么最好的方法是什么?我已经尝试将[DefaultValue(0)]属性添加到类中的Owner属性,但它似乎没有任何区别。
即使这是一个新手或琐碎的习惯用于概念的问题,一些指导也会很好。
此致
答案 0 :(得分:3)
您是否尝试让所有者int
成为nullable值?
[Range(0, 255)]
public int? Owner { get; set; }
答案 1 :(得分:0)
在检查modelState之前,你可以检查它是否为null:
if (viewModel.Owner == null)
{
viewModel.Owner = 0;
}
if(ModelState.IsValid)
...