Nếu đó là một PartialView bạn đang hiển thị trong Chế độ xem trên phương thức của máy chủ, thì Dave sẽ hoạt động tốt nhất. Chỉ cần kết nối mã của bạn với sự kiện sẵn sàng DOM.
$(document).ready(function(){
//Javascript logic to fire goes here
});
hoặc nếu bạn prever phiên bản tốc ký ...
$(function(){
//Javascript logic to fire goes here
});
Nếu bạn đang render một cái nhìn cục bộ đang được nạp thông qua Ajax sau đó cùng một phương pháp sẽ làm việc. jQuery sẽ chạy javascript trong html được truyền lại cho máy khách thông qua Ajax khi nó được gắn vào DOM nếu tôi gọi lại chính xác (cảm thấy tự do để kiểm tra điều này. Tôi chỉ nhớ về bộ nhớ khi nó được gắn vào DOM, nhưng tôi tin rằng là một tính năng của phương pháp load()
), giả sử javascript bạn muốn chạy là trong phản hồi. Nếu nó nằm trong trang mẹ gửi yêu cầu Ajax thì bạn đặt cược tốt nhất là móc nó lên đến sự kiện hoàn chỉnh.(Tôi đang Populating tham số trên các mặt hàng ở đây)
$("#wrapperAwaitingContent").load("/Grids/MyGridPartial", {id: null /*parameters*/}, function(text, status, xhr){
//Javascript logic to fire goes here
});
Đối với tôi url sử dụng trong .load()
cuộc gọi được giải quyết bằng cách sử dụng UrlHelper trên máy chủ
$("#wrapperAwaitingContent").load("@Url.Action("MyGridPartial", "Grids")", {id: null /*parameters*/}, function(text, status, xhr){
//Javascript logic to fire goes here
});
Bạn cũng có tùy chọn làm một cái gì đó tương tự như thế này bằng cách sử dụng Ajax không phô trương. (Tôi đang Populating các tham số về phía máy chủ ở đây)
@Ajax.ActionLink("Load Data", "MyGridPartial", "Grids", new { id = null/*parameters*/ }, new AjaxOptions() { UpdateTargetId = "wrapperAwaitingContent", OnComplete="onCompleteMethodName" })
Có nhiều thuộc tính bạn có thể thiết lập cho AjaxOptions khác hơn là yếu tố để nhận HTML và các phương pháp để gọi khi nó đã hoàn thành nhưng tôi tìm thấy tôi sẽ sử dụng lại các hàm được định nghĩa trong tệp javascript được chia sẻ và chỉ điền chúng nếu chúng chưa được điền từ đó, như thế này ...
$("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");
});
Bạn có nghĩa là "chạy JavaScript trên máy chủ khi một nửa mã HTML được hiển thị? " –
Về cơ bản, tôi cần quyền truy cập vào dữ liệu (mô hình) được cung cấp bởi chế độ xem một phần trên client sau khi xem một phần hiển thị. Tôi đã thử nhiều cách để khởi động một hàm javascript để tôi có thể chạy một số mã khách hàng có thể thực hiện các thao tác chống lại mô hình, nhưng mọi nỗ lực mà tôi đã thực hiện đã không thành công nghiêm trọng. –