MVC3 / 4验证隐藏的域(MVC3/4 Validating Hidden Fields)

2019-07-18 15:31发布

我已经建立了模型验证我的形式,但验证似乎并没有在所有的工作。 我不认为任何人都可以提供帮助。 我一直在使用,周围的工作如下尝试,但,保持在Firebug拉起一个“未定义”的错误。

例如变通脚本:

<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回发错误

编辑:截图显示页面的源代码

页面源代码的屏幕截图

Answer 1:

它来不及改变不显眼的脚本后,以这种方式忽略验证。 这是因为验证只在默认一次拉 - 创建时。 不显眼的脚本为您创建的验证。 您需要引用现有的验证对象,并对其进行更新。

试试这个

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


Answer 2:

如果你没有使用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);
    }


文章来源: MVC3/4 Validating Hidden Fields