Передать динамически сгенерированное проверенное значение CheckBox методу в ASP.NET MVC - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть форма в представлении, которая при нажатии кнопки отправляет модель, полную данных, в метод ActionResult моего контроллера.

В View я создаю флажки на основе определенного содержимого списка ViewModel.Как правило, количество флажков зависит от количества элементов в списке во время загрузки страницы, поэтому оно может варьироваться от сеанса к сеансу.

В тот момент, когда флажки получают значения, соответствующие элементам из списка.

Я хочу включить флажки в форму.Однако я не знаю, как динамически передавать их значения в метод вместе с моделью формы для других элементов управления в форме, так как их идентификаторы, имена и количество могут различаться.

У кого-то есть представление о том, как мнеопределить значения флажков, которые отмечены?

Ответы [ 2 ]

0 голосов
/ 08 апреля 2019

Вы можете сделать это легко с помощью селекторов jQuery, как показано ниже. Оставьте названия всех флажков одинаковыми и используйте селектор, как показано ниже.

function getChecked() {

var checked_items = '';
$("input[name='item']:checked").each(function () { // get the checked items
    checked_items = checked_items + "&item=" + $(this).val();
});
alert('JQUERY : Checked items are : ' +checked_items)

checked_items = ''
var items = document.getElementsByName("item")
for (i=0;i<items.length;i++){
if (items[i].checked) 
   checked_items = checked_items + "&item=" + items[i].value;
}


alert('JAVASCRIPT : Checked items are : ' +checked_items)
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<input type="checkbox" name="item" value="1" />1
<input type="checkbox" name="item" value="2" />2
<input type="checkbox" name="item" value="3" />3
<input type="checkbox" name="item" value="4" />4

<input type="button" value="Submit" onclick="getChecked()">
0 голосов
/ 06 апреля 2019

В Razor / CSHTML:

<input type="checkbox" id="GB" class="CHK" onchange="selectCountry()" /> GB
<input type="checkbox" id="IE" class="CHK" onchange="selectCountry()" /> IE
<input type="checkbox" id="FI" class="CHK" onchange="selectCountry()" /> FI
<input type="checkbox" id="SE" class="CHK" onchange="selectCountry()" /> SE
<input type="checkbox" id="DK" class="CHK" onchange="selectCountry()" /> DK

В JS (для определения переменной):

var CountryChosen=''; //create empty variable to be filled
function selectCountry() {

        if (document.getElementById("GB").checked == true) {
            CountryChosen = "GB";
        }
        if (document.getElementById("IE").checked == true) {
            CountryChosen = "Ireland";
        }
        if (document.getElementById("FI").checked == true) {
            CountryChosen = "Finland";
        }
        if (document.getElementById("SE").checked == true) {
           CountryChosen = "Sweden";
        }
        if (document.getElementById("DK").checked == true) {
            CountryChosen = "Denmark";


    }
}

Вы также можете создать пустой массив для нескольких выборок:

CountriesChosen = []; 

и вместо CountryChosen = X выполните .push (), чтобы добавить к полному массиву и вызвать переменные как часть массива ... в любом случае, пища для размышлений.Затем вы можете использовать переменные JS для передачи в контроллер и результат действия, но это зависит от того, что делает результат действия (например, вызов JSON может быть вызван вызовом AJAX / JQUERY и использовать CountryChosen в качестве переменной).

...