使用数据注释进行MVC3验证?

时间:2012-09-21 12:28:01

标签: asp.net-mvc-3 validation data-annotations

是否可以使用下拉列表的数据注释属性有效,仅当用户选择的值不同于值为o(零)的选项时。 值为o(零)的选项为“请选择一个帐户”,默认情况下已选中。 我使用[必需]属性来验证此下拉列表,但它没有任何效果,因为,我如何说,默认情况下,选项值为o(零) - “请选择一个帐户” - 被选中。

2 个答案:

答案 0 :(得分:1)

类似的东西:

[Range(1, int.MaxValue, ErrorMessage = "Please enter a value bigger than {1}")]
public int Value { get; set; }

答案 1 :(得分:1)

制作一个下拉列表是没有意义的。您需要的是用户从下拉列表中选择一个非零值。那么应该需要的是SelectedAccount属性。您应该使用MVC帮助器方法将下拉选择的值绑定到SelectedAccount属性:

@Html.DropdownListFor(m => m.SelectedAccount, new SelectList(Model.Accounts))

我可能关闭了语法,但你可以看一下。

现在关于确保价值不为零的其他问题。帐号是表示为数字还是包含非数字字符?如果它是一个数字,那么您应该在代码中表示它。如果它确实是一个字符串,那么下拉列表的第一个值应该是一个空字符串而不是零。

如果您确定它是一个数字,那么使用Range注释来确保该值大于零:

[Required]
[Range(1, Int32.MaxValue)]
public string SelectedAccountNumber {get;set;} 

希望有所帮助!