Jeśli jest to PartialView, który renderujesz w widoku na Servinie, metoda Dave'a będzie działać najlepiej. Po prostu podłącz swój kod do zdarzenia przygotowanego w DOM.
$(document).ready(function(){
//Javascript logic to fire goes here
});
lub jeśli prever wersję skróconą ...
$(function(){
//Javascript logic to fire goes here
});
Jeśli renderowanie częściowego widoku, który jest ładowany za pośrednictwem Ajax następnie ta sama metoda zadziała. jQuery uruchomi javascript w html przekazanym klientowi przez Ajax, gdy zostanie on dołączony do DOM, jeśli dobrze pamiętam (nie krępuj się, przetestuj to po prostu przechodzę przez pamięć o tym, że wystrzelił raz przyłączony do DOM, ale wierzę w to jest cechą metody load()
), zakładając, że javascript, który chcesz uruchomić, znajduje się w odpowiedzi. Jeśli znajduje się na stronie nadrzędnej wysyłającej żądanie Ajax, najlepiej jest podłączyć go do pełnego wydarzenia.(Mam wypełniania parametr po stronie klienta tutaj)
$("#wrapperAwaitingContent").load("/Grids/MyGridPartial", {id: null /*parameters*/}, function(text, status, xhr){
//Javascript logic to fire goes here
});
Dla mnie url używane w zaproszeniu .load()
został rozwiązany za pomocą UrlHelper na serwerze
$("#wrapperAwaitingContent").load("@Url.Action("MyGridPartial", "Grids")", {id: null /*parameters*/}, function(text, status, xhr){
//Javascript logic to fire goes here
});
Masz również możliwość robienie czegoś podobnego za pomocą Unftrusive Ajax. (Mam wypełniania parametr po stronie serwera tutaj)
@Ajax.ActionLink("Load Data", "MyGridPartial", "Grids", new { id = null/*parameters*/ }, new AjaxOptions() { UpdateTargetId = "wrapperAwaitingContent", OnComplete="onCompleteMethodName" })
Istnieje więcej właściwości, które można ustawić dla AjaxOptions innych niż element otrzymywać HTML i metody, aby zadzwonić, kiedy to zakończył, ale uważam, że „ll zdefiniowane funkcje ponownego wykorzystania w udostępnionym pliku JavaScript i wypełnić je tylko wtedy, gdy nie są już wypełniane stamtąd coś takiego ...
$("a[data-ajax='true']").each(function() {
var ajaxUpdate = $(this).closest("data-ajax-container");
$(this).attr("data-ajax-update", $(this).attr("data-ajax-update") ? $(this).attr("data-ajax-update") : ajaxUpdate);
$(this).attr("data-ajax-mode", $(this).attr("data-ajax-mode") ? $(this).attr("data-ajax-mode") : "replace");
$(this).attr("data-ajax-success", $(this).attr("data-ajax-success") ? $(this).attr("data-ajax-success") : "AjaxSuccess");
$(this).attr("data-ajax-complete", $(this).attr("data-ajax-complete") ? $(this).attr("data-ajax-complete") : "AjaxComplete");
$(this).attr("data-ajax-failure", $(this).attr("data-ajax-error") ? $(this).attr("data-ajax-error") : "AjaxError");
});
Masz na myśli„wykonywanie kodu JavaScript na serwerze, gdy połowa on HTML jest renderowane? " –
Zasadniczo potrzebuję dostępu do danych (modelu) dostarczanych przez częściowy widok po stronie klienta po renderowaniu częściowym. Próbowałem na wiele sposobów, aby uruchomić funkcję javascript, dzięki czemu mogę uruchomić kod klienta, który wykonałby manipulacje na modelu, ale każda moja próba zakończyła się poważnym niepowodzeniem. –