【问题标题】:asp.net mvc - optional/default value for integer fieldasp.net mvc - 整数字段的可选/默认值
【发布时间】:2023-03-23 08:28:01
【问题描述】:

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

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

即使这是一个新手或习惯于概念的琐碎问题,也可以提供一些指导。

问候,

【问题讨论】:

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


    【解决方案1】:

    您是否尝试将所有者 int 设为 nullable 值?

    [Range(0, 255)]
    public int? Owner { get; set; }
    

    【讨论】:

    • 这对我不起作用 - 也许 Range 属性是必需的?
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-01-31
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      • 2014-04-11
      • 2019-07-26
      • 1970-01-01
      • 2010-10-19
      相关资源
      最近更新 更多