Asp.net mvc MVC3无法验证的下拉列表
不确定是否正确填充了下拉列表,但我在验证下拉列表中的值时遇到问题。当选择一个值时,它仍然显示错误“值x无效”。类型是int?我知道int不能与验证器一起工作 查看模型代码:Asp.net mvc MVC3无法验证的下拉列表,asp.net-mvc,asp.net-mvc-3,validation,Asp.net Mvc,Asp.net Mvc 3,Validation,不确定是否正确填充了下拉列表,但我在验证下拉列表中的值时遇到问题。当选择一个值时,它仍然显示错误“值x无效”。类型是int?我知道int不能与验证器一起工作 查看模型代码: [Display(Name = "Category")] [Required(ErrorMessage = "Category is required.")] public AWS.DTO.Lookup Category { get; set; } public IEnumerable<AWS.
[Display(Name = "Category")]
[Required(ErrorMessage = "Category is required.")]
public AWS.DTO.Lookup Category { get; set; }
public IEnumerable<AWS.DTO.Lookup> Categories { get; set; }
查找类型:
public class Lookup
{
public int? ID { get; set; }
public string Description { get; set; }
}
查看代码:
@Html.DropDownListFor(m => m.Category, new SelectList(Model.Categories, "ID", "Description", -1), "-- Please Select -- ")
提前感谢您的帮助。下拉列表不适用于这种情况。下拉列表只能发送ID,不能发送文本。您正在将整个Category对象传递给DropDownListFor,它无法理解
@Html.DropDownListFor(m => m.Category.ID, new SelectList(Model.Categories, "ID", "Description", -1), "-- Please Select -- ")
下拉菜单不是这样的。下拉列表只能发送ID,不能发送文本。您正在将整个Category对象传递给DropDownListFor,它无法理解
@Html.DropDownListFor(m => m.Category.ID, new SelectList(Model.Categories, "ID", "Description", -1), "-- Please Select -- ")
一旦选中,它就不会绑定到
查找
模型。MVC的工作方式与ASP不同,ASP接收回一个对象(ASP您将“绑定”一个可枚举的对象,当选择时,返回整个对象——在MVC中不是这种情况,只返回键(或映射为下拉列表值的任何属性))
相反,您必须接受一个Int32
,然后在操作中检索匹配的Lookup
。因此,简言之:
类别
成为Int32
/int
(而不是查找
对象)类别
进行查找
一旦选中,它就不会绑定到
查找
模型。MVC的工作方式与ASP不同,ASP接收回一个对象(ASP您将“绑定”一个可枚举的对象,当选择时,返回整个对象——在MVC中不是这种情况,只返回键(或映射为下拉列表值的任何属性))
相反,您必须接受一个Int32
,然后在操作中检索匹配的Lookup
。因此,简言之:
类别
成为Int32
/int
(而不是查找
对象)类别
进行查找
为什么您的
Lookup
类的ID
可以为空?因为我了解到验证器不能处理不可为空的类型,但正如你所看到的,我完全弄错了。为什么你要让查找
类的ID
为空?因为我读到验证器不能处理非空类型,但正如你所看到的,我完全弄错了。