Công cụ ScriptService theo ý kiến của tôi là một đá quý ẩn trong asp.net. Các cuộc gọi đến dịch vụ tập lệnh không có dữ liệu biểu mẫu trả về + viewstate, chúng là các tải trọng nhanh, gọn gàng của JSON.
Đây là phần tốt nhất, trình quản lý tập lệnh của ASP.NET3.5 có thể thực hiện hầu hết công việc cho bạn về việc tạo phương thức JS để gọi và cũng thiết lập bất kỳ lớp JS nào cần thiết.
Ví dụ đơn giản về tìm nạp chi tiết cho "Người", giả sử Người là lớp C#.
Trong PersonService.asmx:
namespace MyProj.Services {
[System.Web.Script.Services.ScriptService]
[System.Web.Script.Services.GenerateScriptType(typeof(Person))]
public class PersonService : System.Web.Services.WebService
{
[WebMethod, ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public Person GetPersonDetails(int id)
{
/* return Logic here */
}
}
}
Trong DetailsPage.aspx
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/Services/PersonService.asmx" />
</Services>
</asp:ScriptManager>
Bằng cách sử dụng một thiết lập như thế này, bạn thậm chí sẽ không cần sự giúp đỡ của JQuery để gọi dịch vụ và lấy lại một phiên bản JS của lớp C# Person của bạn, .net thực hiện tất cả cho bạn. Một ví dụ của việc sử dụng dịch vụ này từ JS sẽ là:
MyProj.Services.PersonService.GetPersonDetails(id, _onDetailsCallbackSuccess, _requestFailed, null);
_onDetailsCallbackSuccess: function(result, userContext, methodName) {
//all persons properties are now intact and available
document.getElementById('txtFirstname').value = result.Firtname;
}
Dù sao, nó sẽ được nhiều hơn thì giá trị xem xét những thứ ASP.NET Ajax ScriptService. Ngay cả khi bạn quyết định không sử dụng nó lần này nó là một tính năng khá độc ác.
Liên kết
Nguồn
2009-03-24 02:12:53
Cảm ơn, câu trả lời của bạn thực sự hữu ích. Tôi đã đánh dấu câu trả lời khác là câu trả lời kể từ khi anh ấy trả lời trước nhưng tôi đã bình chọn câu trả lời của bạn vì nó sẽ hữu ích trong tương lai – jakejgordon
@jake: Bạn nên đánh dấu câu trả lời hữu ích nhất là câu trả lời. Chúng tôi đang thưởng cho những câu trả lời tuyệt vời ở đây, không phải là người đánh máy nhanh. – Espo
Liên kết đầu tiên (www.jankoatwarpspeed.com) trả về Trang không tìm thấy :(Nó có thể đã bị gỡ bỏ inbetween ... – Mochi