我已经为我的表单设置了模型验证,但验证似乎根本不起作用。我不认为任何人可以提供帮助。我尝试过使用下面的解决方法,但这会在firebug中不断提出“未定义”错误。
示例解决脚本:
<script type="text/javascript">
$(document).ready(function () {
$.validator.setDefaults({ ignore: [] });
});
</script>
示例文本字段(注意:名称为customer的自动填充文本字段):
@Html.TextBox("txtCustomer", null, new { @id = "txtCustomer", @class = "txt" })
隐藏字段示例(注意:从自动填充字段中选择时,会将ID注入隐藏字段):
@Html.HiddenFor(model => model.Customer_ID, new { @id = "hCustomerID" })
示例模型数据注释
[Range(1, Int32.MaxValue, ErrorMessage = "Please select a customer")]
public int Customer_ID { get; set; }
编辑:错误屏幕截图
很抱歉,我必须发布截图链接,因为我的代表点足够高。
编辑:显示页面来源的屏幕截图
答案 0 :(得分:9)
在不显眼的脚本之后以这种方式更改验证器上的忽略为时已晚。这是因为验证器只会在创建默认值时拉入一次。不显眼的脚本为您创建验证器。您需要引用现有的验证器对象并进行更新。
试试这个
<script>
$(document).ready(function () {
$('form').validate().settings.ignore = []
});
</script>
答案 1 :(得分:0)
如果您不必在控制器中使用javascript,并且在相关视图的操作中,则可以在验证模型之前添加模型错误。例如:
[HttpPost]
public ActionResult Fix(YourModel mdl)
{
if (mdl.Customer_ID>Int32.MaxValue || mdl.Customer_ID<1)
ModelState.AddModelError("", "Your error message!");
if (ModelState.IsValid)
{
//
//Some code
//
return View("YourView", yourlist);
}
return View(mdl);
}