2016-11-17 9 views
0

Я связываю дополнительную недвижимость Выбор2 DDL и хочу, чтобы получить это значение свойства (Key) с помощью JQuery, как показано ниже:Как получить дополнительное значение параметра в Select2 через jQuery?

Контроллер:

public ActionResult GetProjects() 
{ 
    var projects = repository.Projects.Select(m => new ProjectViewModel 
    { 
     Id = m.Id, 
     Name = m.Name, 
     Key = m.Key //Extra parameter that I want to retrieve using jQuery     
    }) 
    return Json(projects, JsonRequestBehavior.AllowGet); 
} 

Я заселил DDL успешно и попытаться получить значение ключа помимо имени и идентификатора onChange, но не знаю, как его получить:

View:

<input type="hidden" id="key" name="Key" value=0 /> 

//I fill the ddl without no problem via Select2 and there is no need to post its code for brevity 
@Html.DropDownListFor(m => m.ProjectId, Enumerable.Empty<SelectListItem>(), "Select") 

$('#ProjectId').change(function (e) { 
     projectId = $(this).val(); // I can get the selected ProjectId value 
     debugger; 

     //!!! But cannot get the Key value 
     var key = $('#ProjectId').select2('data').Key; 
} 

Любая идея?

Вот тонированное HTML для выбор2:

<select class="select2-hidden-accessible" data-val="true" data-val-number="The field Proje must be a number." data-val-required="Req" id="ProjectId" name="ProjectId" 
tabindex="-1" aria-hidden="true"><option value="">Select</option> 
<option value="1">Project A</option></select> 

<span class="selection"><span class="select2-selection select2-selection--single" role="combobox" aria-autocomplete="list" aria-haspopup="true" 
aria-expanded="false" tabindex="0" aria-labelledby="select2-ProjectId-container"><span class="select2-selection__rendered" id="select2-ProjectId-container" 
title="Project A"><span class="select2-selection__clear">×</span>Project A</span><span class="select2-selection__arrow" role="presentation"> 
<b role="presentation"></b></span></span></span> 
+0

могли бы вы показать обработанную HTML для ВЫБ.2 –

+0

@Mir Опубликовано на вопрос. –

+0

Извините, но я не вижу никакого ключевого атрибута в выбранном параметре –

ответ

0

Вот решение проблемы:

<input type="hidden" id="projectPKey" name="ProjectPKey" value=0 /> 

@Html.DropDownListFor(m => m.ProjectId, Enumerable.Empty<SelectListItem>(), "Select") 

projectId.select2({ 
    //code removed for brevity 
    processResults: function (data, page) { 
    var newData = []; 
    $.each(data, function (index, item) { 
     newData.push({    
      id: item.Id, //id part present in data    
      text: item.Description, //string to be displayed 
      key: item.Key //extra parameter(s) 
     }); 
    }); 
}); 


var pkey = $('#ProjectId').find(':selected').data().data.key; 
$('#projectPKey').val(pkey); 
console.log(pkey);