Я пытаюсь привязать значение из списка select2 к модели на пост бритвы MVC - PullRequest
0 голосов
/ 06 февраля 2019

В настоящее время у меня есть вид редактирования модели на странице бритвы .net-core.Приведенный ниже код работает с точки зрения выбора значения, которое я передаю для PartId в раскрывающемся списке select2.Моя проблема в том, что, когда я пытаюсь опубликовать снова в форме, не касаясь элемента part, проверка жалуется, что она не установлена.Я видел, что он установлен на 0, когда передается действие на контроллер, который не является правильным.

HTML для детали в форме

<div class="form-group">
    <label class="form-label">Part</label>
    <select name="PartId" id="selectpicker1" class="form-control" data-style="btn-default">
       <option></option>
    </select>
<span asp-validation-for="PartId" class="text-danger"></span>
</div>

JS

$('#selectpicker1').select2({
     placeholder: 'Select a part',
     data: JSON.parse('@Html.Raw(Json.Serialize(Model.PartsList))'),

     initSelection: function (element, callback) {
     var data= { id: @Model.PartId.ToString(), text: '@Model.PartsList.Where(x=> x.Id == Model.PartId.ToString() ).First().Text'};
     callback(data);
     }
});

Если я повторно выберу тот же элемент, он будет правильно привязан и отправлен на действие на контроллере.Я не предоставил действие или остальную часть формы, так как эта функция работает правильно.

1 Ответ

0 голосов
/ 06 февраля 2019

Я исправил это, удалив:

 initSelection: function (element, callback) {
     var data= { id: @Model.PartId.ToString(), text: '@Model.PartsList.Where(x=> x.Id == Model.PartId.ToString() ).First().Text'};
     callback(data);
 }

и используя следующее (в настоящее время он выбирает опцию 99, но я могу заменить его на PartId из модели.

 $('#selectpicker1').val('99');
 $('#selectpicker1').trigger('change');
...