asp.net mvc - 整数字段的可选/默认值

时间:2011-02-22 19:33:22

标签: asp.net-mvc validation integer default-value optional

假设我有一个像这样的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属性,但它似乎没有任何区别。

即使这是一个新手或琐碎的习惯用于概念的问题,一些指导也会很好。

此致

2 个答案:

答案 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)
...