7

假设我有一个像这样的视图模型:

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 属性,但它似乎没有任何区别。

即使这是一个新手或微不足道的习惯于概念的问题,一些指导也会很好。

问候,

4

2 回答 2

3

您是否尝试将 Owner设为可int的值?

[Range(0, 255)]
public int? Owner { get; set; }
于 2012-06-23T13:44:07.403 回答
0

您可以在检查模型状态之前检查它是否为空:

if (viewModel.Owner == null)
{
  viewModel.Owner = 0;
}

if(ModelState.IsValid)
...
于 2012-09-24T16:28:57.583 回答