Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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
Asp.net mvc jQuery选择的下拉验证客户端站点不工作_Asp.net Mvc_Validation_Jquery Chosen_Html.dropdownlistfor_Client Side Validation - Fatal编程技术网

Asp.net mvc jQuery选择的下拉验证客户端站点不工作

Asp.net mvc jQuery选择的下拉验证客户端站点不工作,asp.net-mvc,validation,jquery-chosen,html.dropdownlistfor,client-side-validation,Asp.net Mvc,Validation,Jquery Chosen,Html.dropdownlistfor,Client Side Validation,My model类包含一个必需的查找值,该值是基于查找的记录: [Required] [DisplayName("Business Unit")] public string value { get; set; } [Required] //not working on client side? [DisplayName("Business Group")] public int id_businessgroup { get; set; } 视图: Web.config: <add k

My model类包含一个必需的查找值,该值是基于查找的记录:

[Required]
[DisplayName("Business Unit")]
public string value { get; set; }

[Required] //not working on client side?
[DisplayName("Business Group")]
public int id_businessgroup { get; set; }
视图:

Web.config:

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

值验证在客户端工作得很好,但在所选对象的下拉列表中却不起作用。原因可能是什么?

确保选项标签未呈现,因为请从列表中选择组。。。在下拉列表中,默认情况下它将被视为选定值,客户端验证将通过

不要使用ViewBag进行数据绑定,尝试更改您的模型,如下图所示,我测试它工作正常

    [Required]
    [DisplayName("Business Unit")]
    public string value { get; set; }

    [Required] //not working on client side?
    [DisplayName("Business Group")]
    public int id_businessgroup { get; set; }

    public IEnumerable<SelectListItem> BussinessGroup { get; set; } 

确保选项标签未呈现为“请从列表中选择组…”。。。在下拉列表中,默认情况下它将被视为选定值,客户端验证将通过

不要使用ViewBag进行数据绑定,尝试更改您的模型,如下图所示,我测试它工作正常

    [Required]
    [DisplayName("Business Unit")]
    public string value { get; set; }

    [Required] //not working on client side?
    [DisplayName("Business Group")]
    public int id_businessgroup { get; set; }

    public IEnumerable<SelectListItem> BussinessGroup { get; set; } 

通过使用jquery的Select2插件,我找到了一个快速解决方法。我将这个问题留给使用Selected的解决方案。

我通过使用jquery的Select2插件找到了一个快速的解决方法。我将这个问题留给使用selected来解决。

jQuery selected通过使原始的select hidden style=Display:none来更新html。默认情况下,jquery.validate 1.9.0会忽略隐藏的元素。您可以使用

$.validator.setDefaults({ 
  ignore: []
});


jQuerySelected通过使原始的selecthiddenstyle=Display:none来更新html。默认情况下,jquery.validate 1.9.0会忽略隐藏的元素。您可以使用

$.validator.setDefaults({ 
  ignore: []
});



在下拉列表中设置的默认值是什么?无论是选项标签还是页面加载时下拉列表中的任何值?正如您在视图中看到的,请从列表中选择组…在回发id\u businessgroup属性的数据时为空,还是请从列表中选择组…?两者都未设置为0。请记住,在向服务器发送任何内容之前,我需要进行客户端javascript验证。是否尝试将属性设置为nullable int public int?id_businessgroup{get;set;}无论是选项标签还是页面加载时下拉列表中的任何值,下拉列表中设置的默认值是什么?正如您在视图中看到的,请从列表中选择group…在回发时,您为id_businessgroup属性获取的数据为null,或者请从列表中选择group…?两者都不是,它被设置为0。请记住,在向服务器发送任何内容之前,我需要进行客户端javascript验证。是否尝试将属性设置为nullable int public int?id_businessgroup{get;set;}然后,所选的值将是预选下拉列表中的第一个值,我不希望这样。如果呈现的下拉列表与下面类似,请从列表中选择组…是的,这就是它的外观like@Adrian你是否尝试过使用模型属性代替我在回答中更新的ViewBag?然后,所选的值将是预选下拉列表中的第一个值,我不希望这样。如果渲染的下拉列表看起来像下面这样,请从列表中选择组…是的,这就是它的外观like@Adrian你是否尝试过使用模型属性代替我在回答中更新的ViewBag?是的,Selected将选择此选项,但如果某些用户未使用Selected,则可以尝试使用可枚举的select list item属性作为下拉查找值,而不是使用ViewBag。如果可以,请联系并让其他人知道此解决方案是否有效。因为它对我来说很好。谢谢。是的,Selected将选择此选项,但是如果某些人不使用Selected,他们可以尝试使用Enumerable select list item属性作为下拉查找值,而不是使用ViewBag。如果可以,请联系并让其他人知道此解决方案是否有效。因为它对我来说很好。谢谢
            BussinessGroup = new List<SelectListItem>
            {
                new SelectListItem
                {
                    Text = "A",
                    Value = "1"
                },

                    new SelectListItem
                {
                    Text = "B",
                    Value = "2"
                }
            }
    @Html.DropDownListFor(x=>x.id_businessgroup, Model.BussinessGroup, "Please select group from list...")
    @Html.ValidationMessageFor(x=>x.id_businessgroup)
$.validator.setDefaults({ 
  ignore: []
});
$('form').validate({
    ignore: []
});