2010-03-02 7 views
8

Có ai biết nếu có thể tận dụng sức mạnh của JQuery trên máy chủ .Net không?Thao tác DOM phía máy chủ jQuery

Ví dụ: tôi có một số HTML dưới dạng Chuỗi trong một số mã phía sau. Có cách nào để thực hiện JQuery trên nó?

Tôi hiện đang làm điều này ...

Giả sử đây là String ...

<input id='AddressSettings_txtFirstName' name='txtFirstName' 
value='#firstNameValue#' size='25' type='text' class='val_required'/> 

C# tôi thực hiện điều này

strHTML = strHTML.Replace("#firstNameValue#", customerInfo.FirstName); 

Và đây là cách tôi ràng buộc của tôi dữ liệu vào HTML của tôi. Bây giờ những gì tôi muốn làm là thay vì phải thêm # firstNameValue # như một nơi giữ và thay thế nó tôi muốn bằng cách nào đó thực hiện một dòng của JQuery trên chuỗi HTML trong mã C# của tôi.

strHTML = strHTML.ExecuteJQuery("$('#AddressSettings_txtFirstName').text('" 
     + customerInfo.FirstName + "')"); 

Tùy chọn của tôi ở đây là gì?

+0

Tôi quan tâm đến câu hỏi, mặc dù tôi nghi ngờ câu trả lời sẽ là 'không'. (Kể từ khi js là, cho đến nay như tôi biết, phía khách hàng chỉ ...) –

+0

Tôi là lý thuyết ai đó có thể bọc một firefox xây dựng bên trong của một đối tượng .Net. Nó thậm chí sẽ không cần đầy đủ chức năng. Chỉ khả năng tải trang HTML, thực thi Javascript trên trang đó và sau đó trả lại trang. Chắc chắn ai đó phải làm điều này ở đâu đó? – ctrlShiftBryan

+0

Việc làm như vậy không có ý nghĩa. Bạn không thể đảm bảo rằng firefox sẽ ở đầu bên kia, vì vậy bạn kết xuất nó trong một mô hình DOM cho một trình duyệt cụ thể là hơi vô ích. Ngoài ra, bạn đang nghĩ về điều này trong * hoàn toàn * một cách sai lầm. Bạn có quyền truy cập vào HTML hoàn chỉnh được trả lại và có thể thao tác mọi khía cạnh của nó trước khi nó đến trình duyệt. Công nghệ thiết lập để làm điều này trên máy chủ kết thúc là hoàn toàn khác nhau. Bạn chỉ cần chèn HTML nơi bạn muốn với dữ liệu bạn có. Nó đơn giản mà. – casperOne

Trả lời

4

Đối với tất cả ý định và mục đích, câu trả lời là "không" (trong khi có thể có một số cách tối nghĩa để xử lý vấn đề này, đây không phải là cách tối ưu nhất). Có vẻ như bạn đang tìm cách điều khiển HTML đang được sản xuất trên máy chủ , đó là một mong muốn rất hợp pháp, nó chỉ là cách tiếp cận ở phía máy chủ sử dụng .NET (hoặc khác) công nghệ hoàn toàn khác với cách bạn tiếp cận nó ở phía máy khách.

Bởi vì nội dung đã được hiển thị trên máy khách, cách bạn sẽ apprach sửa đổi nó là khác nhau. Trên máy chủ, trang được xây dựng từ nhiều phần khác nhau, cuối cùng kết xuất HTML cho máy khách, sử dụng dữ liệu mà máy khách không nhất thiết có quyền truy cập (cũng như tài nguyên và thư viện).

Vì lý do đó bạn muốn sử dụng những gì có sẵn trên máy chủ để thực hiện những gì bạn đang làm.

Cho dù bạn đang sử dụng mô hình WebForms hoặc mô hình MVC của ASP.NET, có các cơ chế cho phép bạn liên kết với dữ liệu mà không phải tự mình viết thẻ.

Ví dụ: trong mô hình WebForm, bạn có TextBox class mà bạn có thể đặt Text property bật.

Trong ASP.NET MVC, có TextBox extension method trên InputExtensions class cho phép bạn chuyển nội dung của hộp văn bản và phương thức sẽ hiển thị thẻ cho bạn.

0

DOM là thực thể cụ thể của trình duyệt. Do đó, không trực tiếp có sẵn khi bạn tìm kiếm. Tuy nhiên, bạn có thể xác định chỉ là những gì bạn muốn thao tác, và sử dụng hoặc .live() hoặc gọi mã jQuery của bạn để thêm công cụ hành vi như các yếu tố được thêm vào. Đối với thay đổi:

<input id='AddressSettings_txtFirstName' name='txtFirstName' 
value='#firstNameValue#' size='25' type='text' class='val_required'/> 

$('#AddressSettings_txtFirstName').change(function(){ 
// do stuff here 
}); 

sẽ kích hoạt khi thay đổi ví dụ. EDIT: Một tùy chọn khác là để khách hàng kéo dữ liệu bằng cách sử dụng ajax và JSON - nhưng đó là một thay đổi nhỏ trong phương pháp làm việc của bạn hiện tại.

0

Đây là câu trả lời cho Java. HereHere Được cung cấp bởi một số anh chàng tên là John Resig. (Không chắc chắn anh ta biết những gì hes nói về khi nói đến JQuery ... nháy mắt nháy mắt)

Bây giờ còn về .Net?

-1

Công nghệ này, ItsNat, rất giống với mong muốn của bạn, tin xấu ... là dựa trên Java.

1

Có thể là những gì bạn muốn là gói nhanh nhẹn HTML. Bạn không thể thực thi JavaScript, nhưng bạn có thể thực hiện một số thao tác DOM. Hãy thử xem http://htmlagilitypack.codeplex.com/.

1

Sử dụng jQuery với jsdom cho Node.js. Cách dễ nhất để thao tác các phần tử DOM bằng cách sử dụng javascript ở phía máy chủ.