Задать для события onclick значение c# URL Action в javascript? - PullRequest
2 голосов
/ 26 апреля 2020

На мой взгляд, у меня есть вход для флажка следующим образом:

<input type="checkbox" data-toggle="modal" data-target="#CheckItemsModal" id="@item.ItemId" onclick="location.href = '@Url.Action("CheckedItem", "List", new { id = item.ItemId })'; Checked(this.id)" />

Я пытаюсь получить модальное подтверждение о проверке и снятии флажка, однако это означает, что мое действие URL потребует чтобы перейти к кнопке модала, сохраняя при этом id = item.ItemId, поэтому я планирую javascript сделать это, однако я не уверен, как правильно назначить событие onclick модальной кнопки.

Это это то, что у меня есть (ошибка, которую он выдает, заключается в том, что checkId внутри действия url не существует в текущем контексте):

function Checked(checkId) {
   if ($(checkId).Checked == true) {
      $(modalButton).setAttribute('onclick','location.href = '@Url.Action("CheckedItem", "List", new { id = checkId })'')
   }
}

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 26 апреля 2020

C# запускается на сервере и JavaScript в браузере. Ваш URL.Действие выполняется на сервере, где переменная checkId не существует. Вам нужно сгенерировать URL из чистого JavaScript в методе onclick или сгенерировать ссылки, используя Url.Action для всех флажков заранее.

Другой вариант - использовать замену строки в методе JavaScript onclick. Например:

 location.href = '@Url.Action("CheckedItem", "List", new { id = "_REPLACE_ID_" })'.replace( "_REPLACE_ID_", checkId);

Посмотрите на сгенерированный HTML источник, чтобы увидеть, что происходит.

Вы также должны быть осторожны с вашими цитатами. В вашем коде у вас есть недействительный JavaScript с несколькими последовательными одинарными кавычками в конце.

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