MVC Проверить, содержит ли javascript массив элемент флажка из html - PullRequest
0 голосов
/ 29 мая 2020

У меня есть сайт MVC с разбивкой на страницы индекса. Я правильно установил флажок для каждой строки в моей таблице, но если пользователь выбирает элемент на странице 1, затем переходит на страницу 2 и обратно на страницу 1, этот элемент больше не проверяется.

Из-за использования моих флажков, когда пользователь щелкает один, значение передается в функцию сценария java, которая сохраняет значение в массиве. Таким образом, хотя флажок больше не выбран явно для просмотра пользователем, у меня есть выбранные значения, хранящиеся в массиве.

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

Вот мой IndexView html:

         @foreach (var item in Model)
                {
                <tr>
                      <td>

                          <input type="checkbox" id="checkBoxAll" name="recordId" value="@item.pkTestRecord" onclick="addValue(this.value)" />
                          <a href="~/TestRecord/DetailsDummy/@item.pkTestRecord" data-url="@Url.Action("DetailsDummy", "TestRecord", new { id = item.pkTestRecord })">@item.nkFileName</a>

                      </td>
....

И мой java script:

 <script type="text/javascript">
    var list = "";
    var selectedCount = 0;
    var selectedCheck = [];
    var s = 25;
    function addCount() {
        selectedCount++;

        document.getElementById("selectCount").innerHTML = ("(Selected: ") + selectedCount + ")"
    }
    function deleteCount() {
        selectedCount--;
        if (selectedCount > 0) {
            document.getElementById("selectCount").innerHTML = ("   (Selected: ") + selectedCount + ")"
        }
    }


        function addValue(val) {

        var check = selectedCheck.indexOf(val);

        if (check == -1) {
            addCount();
            selectedCheck.push(val);
        }
        else {
            deleteCount();

            for (var i = 0; i < selectedCheck.length; i++) {
                if (selectedCheck[i] == val) {
                    selectedCheck.splice(i, 1);
                    i--;
                }
            }

        }


    }



    </script>

Лог c за моим кодом:

  • Когда пользователь щелкает флажок, addValue (item) java script функция вызывается.

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

  • В противном случае добавьте элемент, выбранный пользователем, в массив

Я предполагаю добавить примерно следующее:

@foreach (var item in Model)
               {
               <tr>
                     <td>
@if( #call java scipt, pass item value, and check if array contains this item)
{
input type="checkbox" id="checkBoxAll" name="recordId" value="@item.pkTestRecord" onclick="addValue(this.value)" checked />
}
else{
input type="checkbox" id="checkBoxAll" name="recordId" value="@item.pkTestRecord" onclick="addValue(this.value)" />
}

                         <
                         <a href="~/TestRecord/DetailsDummy/@item.pkTestRecord" data-url="@Url.Action("DetailsDummy", "TestRecord", new { id = item.pkTestRecord })">@item.nkFileName</a>

                     </td>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...