Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery MVC3/4验证隐藏字段_Jquery_Asp.net Mvc 3_Jquery Validate_Unobtrusive Validation - Fatal编程技术网

Jquery MVC3/4验证隐藏字段

Jquery MVC3/4验证隐藏字段,jquery,asp.net-mvc-3,jquery-validate,unobtrusive-validation,Jquery,Asp.net Mvc 3,Jquery Validate,Unobtrusive Validation,我已经为表单设置了模型验证,但验证似乎根本不起作用。我想没有人能帮忙。我尝试过使用下面的解决方法,但这会在firebug中不断出现“未定义”错误 示例解决方案脚本: <script type="text/javascript"> $(document).ready(function () { $.validator.setDefaults({ ignore: [] }); }); </script> @Ht

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

示例解决方案脚本:

<script type="text/javascript">
    $(document).ready(function () {            
        $.validator.setDefaults({ ignore: [] });
    });
</script>
    @Html.TextBox("txtCustomer", null, new { @id = "txtCustomer", @class = "txt" })
    @Html.HiddenFor(model => model.Customer_ID, new { @id = "hCustomerID" })
隐藏字段示例(注意:当从自动完成字段进行选择时,id被注入隐藏字段):

<script type="text/javascript">
    $(document).ready(function () {            
        $.validator.setDefaults({ ignore: [] });
    });
</script>
    @Html.TextBox("txtCustomer", null, new { @id = "txtCustomer", @class = "txt" })
    @Html.HiddenFor(model => model.Customer_ID, new { @id = "hCustomerID" })
示例模型数据注释

    [Range(1, Int32.MaxValue, ErrorMessage = "Please select a customer")]
    public int Customer_ID { get; set; }
编辑:错误屏幕截图

很抱歉,我必须发布屏幕截图的链接,因为我的代表分数足够高

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


在不引人注目的脚本之后,以这种方式更改验证器上的忽略太晚了。这是因为验证器在创建时只提取默认值一次。这个不引人注目的脚本为您创建了验证器。您需要引用现有的验证器对象并对其进行更新

试试这个

<script>
    $(document).ready(function () {            
        $('form').validate().settings.ignore = []
    });
</script>

$(文档).ready(函数(){
$('form').validate().settings.ignore=[]
});

如果不必在控制器和相关视图的操作中使用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);
    }
[HttpPost]
公共行动结果修复(YourModel mdl)
{

如果(mdl.Customer_ID>Int32.MaxValue | | | mdl.Customer_ID)它告诉您什么是未定义的?$.validator.setDefaults({ignore:[]});可能是重复的我尝试了类似的方法,但仍然显示了一个错误,请参考原始帖子的屏幕截图。从这个错误中,“验证不是一个函数”可能是您没有包含jquery验证js文件,或者您在页面中包含的文件不够高-检查这一点,但我认为您需要严格执行问这个问题-你说验证“似乎根本不起作用”,并且您有一个错误“validate is not a function”…这表明您没有客户端验证工作,那么关于验证隐藏字段或对jquery验证设置进行故障排除的问题也是如此吗?我想我只是想寻求一些帮助,以了解如何正确验证隐藏字段。关于为什么它的工作原理与标准字段不同。如果使用:var validator=$(“#mvcForm”).data('validator');validator.settings.ignore=“”,则不适用加号,这似乎允许设置生效。我现在遇到的问题是,即使通过jquery ui autocomplete将值注入隐藏字段,所需的消息也不会消失。