2016-08-04 4 views
0

Я пытаюсь сделать кнопку в Poppost Popper, которая передает значение Razor другой функции JavaScript под названием killDatabase при работе с Razor foreach. Код создает список кнопок, которые вы можете выбрать, но я также хочу, чтобы у вас была возможность нажать кнопку и удалить один из параметров. Код не вызывает ошибок, и все работает отлично, за исключением того факта, что любая из кнопок удаления всегда удаляет последний элемент, а не тот, с которым он должен быть связан. Я предполагаю, что это вызвано тем, что функция вызывается на onclick, и поэтому в этой точке @str - это просто имя последнего элемента, но мне интересно, есть ли способ сохранить это значение как уникальное для каждого элемента? Я попытался добавить переменную JavaScript в пределах foreach, но все равно столкнулся с той же проблемой.MVC @foreach и JavaScript Confusion

<div class="btn-group-vertical btn-block" data-toggle="buttons" id="btns"> 
    @foreach (var str in Model) 
    { 

    <div id="popover-content" hidden> 
     Are you sure you would like to permanently delete this query from the database?<br /> 
     <button onclick="killDatabase('@str')" class="btn btn-primary btn-sm" style="float:left; margin-bottom: 10px;">Yes</button> 
     <button class="btn btn-sm btn-primary" style="float:left;">No</button> 
    </div> 
     <label class="btn btn-default" style="height:auto"> 
      <div class="form-group" style="height:auto; padding-bottom: 10px;"> 
       <input type="radio" name="query" value="@str" /> 
       <span class="pull-left">@str</span> 
       <span class="pull-right"> 
       <button class="btn btn-sm btn-danger" style="margin-top:-2px;" data-toggle="popover" title="Confirm Deletion" data-placement="bottom"> 
       <span class="glyphicon glyphicon-trash"></span></button></span> 
      </div> 
     </label> 

    } 
</div> 
+0

Этот код находится внутри внешнего файла Javascript? Если это так, вы не сможете использовать какой-либо синтаксис бритвы (например, '@ str') для ссылки на ваши серверные переменные. –

+0

С кодом, который вы указали, он передает переменную str (итератор в цикле) вашему методу 'killDatabase'. Что делает этот метод? Вы видите уникальные переменные 'str', отображаемые при просмотре источника страницы? – Shyju

+0

@RionWilliams Извините, должен был упомянуть об этом в представлении, а не внешнем JavaScript. Как я уже сказал, все остальное прекрасно работает, в том числе другие ссылки на '@ str', за исключением случаев, когда я передаю его' killDatabase' –

ответ

0

Таким образом, я собираюсь закрыть этот вопрос, потому что именно я был очень смущен AJAX. Вот к чему это сводилось к: у меня был плохой вызов AJAX, и я пытался делать что-то на popover, который был инициализирован после загрузки страницы, поэтому в любое время я попытаюсь использовать значение @str в этом всплывающем окне, это займет самое последнее значение. Я переработал код в более упрощенном, менее сложном дизайне, и теперь он отлично работает. Спасибо всем, кто пытался помочь