2012-02-28 79 views
1

我仍然在学习MVC3和剃刀,所以这也许是一个简单的问题。DropDownList客户端验证正在验证它不应该。 (MVC3,剃刀)

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

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

有被定义为视图模型的细分特性:

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

有JavaScript的处理该事件改变这个DropDownList中并填充适当的值另一个DropDownList的。其他DropDownList是这样定义的:

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

这一切都工作正常,直到我提交。提交时,我会在细分下拉列表中收到验证错误!

现在 - 应该有绝对的区段上的DropDownList没有验证 - 不应该有在任的任何客户端验证下拉列表中,对这一问题。

但是当我尝试提交,我得到验证错误信息返回:

值“1”是无效的。

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

+0

嘿,没我们都同意有可读的变量名称? ☺ – MrBoJangles 2012-02-28 16:23:25

回答

1

确保您的模型已fafhProdRecId为空,我想它的声明如下:

public int fafhProdRecId { get; set; } 

更改为:

public int? fafhProdRecId { get; set; } 

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

+0

错误(似乎是)在段上,而不是fafhProdRecId。尽管我尝试了你的改变,但似乎没有任何区别。在分段下拉菜单中,仍然得到值“1”是无效的消息。 – 2012-02-28 16:39:28