Как передать счетчик бритвы в функцию onkeyup javascript - PullRequest
0 голосов
/ 07 июня 2018

У меня такое представление на моей странице .cshtml:

@{ var counter = 0; } 
@foreach (var item in Model){    
     @Html.TextBox("name_" + @counter, item.name, 
          new { 
               @class = "form-control", 
               @onkeyup = "myFuncWithRazorCounter('My Counter: ' + @counter)" 
          })
     { counter = counter + 1; }
}    

@section scripts
{
     <script type="text/javascript">
          function myFuncWithRazorCounter(counter){ 
               var myCounter = counter; 
               console.log(myCounter);
          }
     </script>
}

Допустим, мой счетчик моделей равен 10.

Когда я вызываю функцию из прослушивателя событий onkeyup, набравв id текстового поля name_8, как счетчик может пройти через функцию myFuncWithRazorCounter ()?

Конечный результат, который я хотел бы видеть в консоли: Мой счетчик: 8

1 Ответ

0 голосов
/ 08 июня 2018

Вы получите ошибку Invalid or unexpected token в браузере, и если вы проверите HTML, который вы генерируете, то увидите, что вы визуализируете

<input ... onkeyup="myFuncWithRazorCounter('My Counter: ' + @counter)" ... >

Обратите внимание, что @counter незаменено фактическим значением counter.

. Вы можете решить эту проблему, используя

@Html.TextBox("name_" + counter, item.name, new
{
    @class = "form-control",
    @onkeyup = "myFuncWithRazorCounter(" + counter + ")",
})

Обратите внимание, что @ не требуется.Затем измените сценарий на

function myFuncWithRazorCounter(counter) { 
   var myCounter = counter; 
   console.log('My Counter: ' + counter);
}

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

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