我还在学习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验证器它实际上是非常突兀的。
答案 0 :(得分:3)
在ViewModel类中添加[Bind(Exclude =“Segments”)]
答案 1 :(得分:1)
确保您的模型fafhProdRecId
可以为空,我想它被声明为:
public int fafhProdRecId { get; set; }
将其更改为:
public int? fafhProdRecId { get; set; }
希望,这应解决问题,因为这有效地使模型字段可以为空(假设db字段可以为空当然也是如此)。