2013-04-26 2 views
-2

Я разрабатываю приложение MVC. Я хочу получить идентификатор записи, когда я нажимаю ссылку удаления. В окне предупреждения я хочу показать идентификатор записи, который я удалил.Как получить идентификатор, используя JQuery в MVC?

Как это сделать?

@model PaymentAdviceEntity.CompanyType 

    <script type="text/javascript"> 

     $(document).ready(function() { 
      $('.remove').click(function() { 
       alert(?????);   
       $(this).parent().parent().remove(); 


     });   

     }); 

    </script>   


    <div id='InvoiceList' class='divInvoiceList span12' style='margin-bottom:5px;margin-left:0px;'> 
      @if (Model != null) 
     { 
       <span class="span3" style="margin-left:0px;">@Html.TextBox("InvoiceId", @Model.Name , new { @onkeypress = "return isNumberKey(event)", @onblur = "CalculateNetValue()", @style = "width:75%; text-align:right;", @class = "clsInvoiceId" })</span> 

<span class="span1" style="margin-left:0px;padding-top:6px;">@Html.HiddenFor(model=>model.Id) <a href='#' style='font-size:14px;text-decoration:none;font-weight:bold;' id='lnkRemove' class='clsRemove remove'>X</a></span> 

     } 

    </div> 

Я могу видеть Индентификационный т.е. данных идентификатор = 4, но не могу получить проверить ниже HTML-код после запуска приложения.

<span class="span3" style="margin-left:0px;" data-id="4"><input class="clsInvoiceId valid" id="InvoiceId" name="InvoiceId" onblur="CalculateNetValue()" onkeypress="return isNumberKey(event)" style="width:75%; text-align:right;" type="text" value="asdasd"></span> 
+0

Почему бы не получить Id перед удалением или просто скрыть вместо удаления? –

+0

Я думаю, что ваша разметка неверна. Если вы используете $ (this) .parent(). Parent(). Remove(); вы будете удалять родительский div, который является «InvoiceList», а не другим диапазоном, который содержит идентификатор записи –

+0

, я проверю это, но мой первый приоритет - получить идентификатор диапазона ... – bnil

ответ

1
$('.remove').click(function() { 
    var $ele = $(this).parent().parent(); 

    var id = $ele.attr("id"); 

    $ele.remove(); 

    alert(id);     
}); 
+0

Не работает, сообщение «undefined» появляется в сообщении – bnil

+0

У меня есть обновленный вопрос, пожалуйста, проверьте. – bnil

1

Если говорить об атрибуте ID в вашей модели, то вы можете просто добавить, что в скрытом поле внутри диапазона

<span class="span1" style="margin-left:0px;padding-top:6px;">@Html.HiddenFor(model=>model.ID) <a href='#' style='font-size:14px;text-decoration:none;font-weight:bold;' id='lnkRemove' class='clsRemove remove'>X</a></span> 

и доступ к нему на стороне клиента, как

$(document).ready(function() { 
     $('.remove').click(function() { 
      var id = $(this).closest("input").val(); 
      $(this).parent().parent().remove(); 

      alert(id);     
    }); 

EDIT

Если следующий HTML будет производится

<span class="span3" style="margin-left:0px;" data-id="4"><input class="clsInvoiceId valid" id="InvoiceId" name="InvoiceId" onblur="CalculateNetValue()" onkeypress="return isNumberKey(event)" style="width:75%; text-align:right;" type="text" value="asdasd"></span> 

Затем вы должны использовать следующий JQuery код

$('.remove').click(function() { 
    var id = $(this).parent().prev().attr("data-id"); 
    $(this).parent().parent().remove(); 
    alert(id); 
}); 

Вы можете видеть, что это работает here

+0

Не работает, сообщение «undefined» появляется в сообщении. – bnil

+0

У меня есть вопрос, пожалуйста, проверьте. – bnil

+0

@ user1650894 Я обновил свой ответ .. надеюсь, это поможет вам –

1
$('.remove').click(function() { 
    var removedId = $(this).closest('.clsInvoiceId').val(); 
    $(this).parent().parent().remove(); 
    alert(removedId); 
} 
+0

Не работает сообщение «undefined» появляется в сообщении. – bnil

+0

Попробуйте прямо сейчас, я сделал быстрое обновление – NinjaNye

1

UPDATE

Если ваш HTML l ooks как это,

<span class="span3" style="margin-left:0px;" data-id="4"> 
     <input class="clsInvoiceId valid" id="InvoiceId" name="InvoiceId" onblur="CalculateNetValue()" onkeypress="return isNumberKey(event)" style="width:75%; text-align:right;" type="text" value="asdasd"> 
    </span> 
    <span class="span1" style="margin-left:0px;padding-top:6px;"> 
     <a href='#' style='font-size:14px;text-decoration:none;font-weight:bold;' id='lnkRemove' class='clsRemove remove'>X</a> 
    </span> 

Затем, когда вы щелкаете по ссылке, это должно получить data-id

$('.remove').live("click", function() {  
    var removedId = $(this).parent().prev().attr("data-id"); 
    $(this).parent().parent().remove(); 
    alert(removedId); 
}); 
+0

попробовал то же самое, но не работал ... – bnil

+0

Я обновил свой ответ. –

+0

В окне предупреждения появляется сообщение «undefined». – bnil

1

Вы должны поместить идентификатор где-то в HTML наценки, так как после того, как в клиент-земля , у вас больше нет доступа к модели.

В принципе вы можете использовать новый data- HTML5 атрибуты:

<span class="span1" data-id="@Model.ID"> <-- this is the important bit 
    <a href='#' id='lnkRemove' class='clsRemove remove'>X</a> 
</span> 

затем:

$(document).ready(function() { 
    $('.remove').click(function() { 
     alert($(this).parent().data("id")); // here we read the data-id... 
     $(this).parent().parent().remove(); 
    });   
}); 
+0

Не работает. В предупреждении появляется сообщение «undefined» , – bnil

+0

Можете ли вы проверить сгенерированный HTML? он должен иметь 'data-id =" ... "' с идентификационным номером там. Удостоверьтесь, что вы поднимаетесь с помощью 'parent()' правильного количества раз ... Я использовал parent() только один раз и поместил 'data-id' на span ... – Tallmaris

+0

yes data-id поступает в HTML-код , но он показывает сообщение «undefined» в предупреждении. – bnil

Смежные вопросы