2

我已经为我的表单设置了模型验证,但验证似乎根本不起作用。我想没有人能帮上忙。我尝试过使用以下解决方法,但这会在萤火虫中不断出现“未定义”错误。

示例解决方法脚本:

<script type="text/javascript">
    $(document).ready(function () {            
        $.validator.setDefaults({ ignore: [] });
    });
</script>

示例文本字段(注意:带有客户姓名的自动完成文本字段):

    @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; }

编辑:错误截图

抱歉,我必须发布截图链接,因为我的代表点足够高。

UI 回发错误

编辑:显示页面源的屏幕截图

页面源截图

4

2 回答 2

9

在不显眼的脚本之后以这种方式更改验证器上的忽略为时已晚。这是因为验证器仅在创建时提取一次默认值。不显眼的脚本会为您创建验证器。您需要引用现有的验证器对象并对其进行更新。

试试这个

<script>
    $(document).ready(function () {            
        $('form').validate().settings.ignore = []
    });
</script>
于 2013-01-24T16:57:23.130 回答
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);
    }
于 2016-03-29T05:07:29.853 回答