DropDownList客户端验证正在验证何时不应该。 (MVC3,Razor)

时间:2012-02-28 15:47:01

标签: asp.net-mvc-3 razor unobtrusive-validation

我还在学习MVC3和Razor,所以这可能是一个简单的问题。

在视图中我有一个DropDownList,其唯一目的是帮助过滤(通过AJAX)第二个下拉列表:

@Html.DropDownList("Segments", "-- select segment --")

ViewModel的Segments属性定义为:

public IEnumerable<SelectListItem> Segments { get; set; }

有一些JavaScript处理此DropDownList的change事件,并使用适当的值填充另一个DropDownList。其他DropDownList定义如下:

@Html.DropDownListFor(m => m.fafhProdRecId, Enumerable.Empty<SelectListItem>(), "-- select product recommendation --")

这一切都正常,直到我提交。当我提交时,我在Segments下拉列表中收到验证错误!

现在 - 对DropDownList段应该绝对没有验证 - 就此而言,在EITHER下拉列表中不应该有任何客户端验证。

但是当我尝试提交时,我收到验证错误消息:

值“1”无效。

我不知道为什么会这样。 我不知道如何装饰Segments属性,说它不是必需的。 我不知道如何告诉不显眼的javascript验证器它实际上是非常突兀的。

2 个答案:

答案 0 :(得分:3)

在ViewModel类中添加[Bind(Exclude =“Segments”)]

来自:Using Data Annotations for Model Validation

答案 1 :(得分:1)

确保您的模型fafhProdRecId可以为空,我想它被声明为:

public int fafhProdRecId { get; set; }

将其更改为:

public int? fafhProdRecId { get; set; }

希望,这应解决问题,因为这有效地使模型字段可以为空(假设db字段可以为空当然也是如此)。