0

Моя модель содержит класс требуемого значения поиска, который является поиск на основе записи:JQuery Избранного Dropdown не работает

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

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

Вид:

<div class="editor-label"> 
     @Html.LabelFor(model => model.value) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.value) 
     @Html.ValidationMessageFor(model => model.value) 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(x=>x.BusinessGroup.value) 
    </div> 
    <div class="editor-field"> 
     @Html.DropDownListFor(x => x.id_businessgroup, new SelectList(ViewBag.BusinessGroups,"id","value"),"Please select group from list...") 
     @Html.ValidationMessageFor(x => x.id_businessgroup) 
    </div> 

@section scripts{ 
    @Html.Partial("ScriptUseChosen") 
} 

Контроллер:

public ActionResult Create() 
    { 
     ViewBag.BusinessGroups = DB.BusinessGroups.Where(x => x.is_active).OrderBy(x => x.value).ToList(); 
     return View(); 
    } 

Веб.конфигурация:

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

BundleConfig.cs:

  bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
      "~/Scripts/jquery.validate*", 
      "~/Scripts/jquery.unobtrusive*")); 

Валидация value прекрасно работает на стороне клиента, но он не работает на выпадающем списке Избранных в. Что может быть причиной?

+0

Что такое значение по умолчанию, которое устанавливается в раскрывающемся списке ли этикетке опции или какой-либо из значения из выпадающего списка на странице загрузки? – Venkat

+0

Как вы можете видеть в тексте «Просмотр» '' Пожалуйста, выберите группу из списка ... »' –

+0

В ответ на вопрос, какие данные вы получите для свойства id_businessgroup null или «Пожалуйста, выберите группу из списка ...»? – Venkat

ответ

6

jQuery Chosen обновляет html, делая оригинальный выбор скрытым (style="Display:none"). По умолчанию jquery.validate (1.9.0) игнорирует скрытые элементы. Вы можете изменить настройки по умолчанию с помощью

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

или

$('form').validate({ 
    ignore: [] 
}); 
0

Убедитесь, что метка опции не отображается в списке. Пожалуйста, выберите группу из списка ... в раскрывающемся списке, тогда она будет считаться выбранным значением по умолчанию, и проверка на стороне клиента будет проходить.

Вместо использования 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; } 

и связать данные с BussinessGroup в контроллере, как,

  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) 
+0

Тогда выбранное значение будет первым значением из раскрывающегося списка (предварительно выбранным), и я не хочу, чтобы это отображалось в –

+0

. Отображается ли ваше выпадающее меню ниже: Venkat

+0

Да, это так, как это выглядит –

0

Я нашел быстрый workaro и для этого, используя плагин Select2 jquery. Я оставляю этот вопрос открытым для решения с помощью Chosen.

+0

Да, выбранный будет выбирать этот, но если кто-то не использует выбранные, они могут попытаться использовать свойство списка Перечислимого элемента выбора для раскрывающегося списка, вместо использования ViewBag. Если бы вы могли и позволить другим знать, работает ли это решение или нет. Поскольку это работает отлично для меня. Благодарю. – Venkat

Смежные вопросы