Используйте переменную javascript в razor: "имя 'I' не существует в текущем контексте"
У меня есть таблица из одного столбца атрибута
List<string> strengthC
<table> <thead> <tr> <th> @Html.LabelFor(model => model.strengthC, htmlAttributes: new { @class = "control-label col-md-3" }) </th> </tr> </thead> <tbody> <tr> <td> @Html.EditorFor(model => model.strengthC[0], new { htmlAttributes = new { @class = "form-control", @style = "background-color: Azure; opacity:0.9" } }) @Html.ValidationMessageFor(model => model.strengthC, "", new { @class = "text-danger" }) </td> </tr> </tbody> </table>
Я хочу добавить новые строки в таблицу со счетчиком
'i'
это и есть индекс strength[i]
использование JavaScript.Что я уже пробовал:
<script type="text/javascript"> var i = 0; function newRow() { i += 1; $('#mainTable tr:last').after('<tr><td>@Html.EditorFor(model => model.strengthC[i], new { htmlAttributes = new { @class = "form-control", @style = "background-color: Azure; opacity:0.9" } }) @Html.ValidationMessageFor(model => model.strengthC, "", new { @class = "text-danger" }</td></tr>'); } </script>
Проблема здесь в том, что
model.strengthC[i]
не принимает 'i'
в качестве параметра: "имя 'i' не существует в текущем контексте"
F-ES Sitecore
Вы не можете этого сделать, потому что ваш код razor запускается на сервере для генерации html, который затем отправляется в браузер для выполнения. Ваша строка model.strength[i] выполняется на сервере до того, как результирующий js будет отправлен в браузер для выполнения, поэтому "i" как концепция javascript еще не существует, он ищет переменную под названием "i" в вашем серверном коде.
Вам придется создать html-код, чтобы добавить новую строку в обычном режиме. Если вы посмотрите на источник вашей страницы, то увидите, как вам нужно построить элементы, это, вероятно, будет вход с именем "strength[0]", "strength[1]" и т. д., Поэтому вам просто нужно создать новый вход с именем "strength[n]", где "n" - следующее число в последовательности.
Если вы загуглите "mvc create dynamic editor via javascript", то, вероятно, найдете пример кода.
TempoClick
Но как передать n в функцию javascript, а затем использовать ее в strengthC[]?