2009-08-03 42 views
6

Đây là mã thực tế từ những gì tôi đang làm việc để lấy ID từ chuỗi truy vấn, truy xuất đối tượng và phân tích cú pháp thành json. Tôi sẽ cần lưu trữ và thao tác với phía máy khách dữ liệu này. Cách tốt nhất để thiết lập chuỗi json được sinh ra thành một đối tượng phía máy khách là gì?Một số phương pháp hay nhất để tự động thêm javascript vào trang asp.net là gì?

Lưu ý: NewObjectCase là một lớp với phương thức Get (strID) trả về một đối tượng mới. Tools.GetQueryObject (string key) là một metod mà trả về giá trị chuỗi của khóa

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Web; 
    using System.Web.UI; 
    using System.Web.Script.Serialization; 
    using System.Web.UI.WebControls; 

     public partial class Testing: System.Web.UI.Page 
     { 
      protected void Page_Load(object sender, EventArgs e) 
      { 
       if (!IsPostBack) 
       { 
        string strJson = new JavaScriptSerializer().Serialize(NewObjectCase.Get(Tools.GetQueryObject("id"))); 
        // add in js to page that will set an client-side js object to this generated json 
       } 
      } 
     } 

Trả lời

1

Đây là kế hoạch ban đầu của tôi, nhưng nó có vẻ như có thể là một cách tốt hơn để thêm một đối tượng json và trong intellisence tôi nhận thấy nó có [Không được chấp nhận] bên cạnh Page.RegisterClientScriptBlock().

Page.RegisterClientScriptBlock("clientScript", 
    string.Format("<script type='text/javascript' language='javascript'>objCase = {0}</script>", strJson)); 
5

Couple cách đơn giản của việc hoàn thành công việc:

1: Sử dụng ClientScriptManager.RegisterClientScriptBlock cuộc gọi để chèn script trực tiếp trên trang:

protected void Page_Load(object sender, EventArgs e) { 

    // Not sure what your Tools.GetQueryObject is doing, but it should at 
    // the least be performing a UrlDecode to convert the string from any 
    // Url encoding, and as you're about to pass this back to javascript, 
    // you should also HtmlEncode it. 
    string valueFromCodeBehind = "var myValue = " + 
       Server.HtmlEncode(Server.UrlDecode(Request.QueryString["id"])); 

    // Get a ClientScriptManager reference from the Page class. 
    ClientScriptManager cs = Page.ClientScript; 

    // Output the script block to the page. 
    // Notes: 
    // 1) I'm passing true as the final parameter to get the script manager 
    // to auto generate the script tags for me. 
    // 2) You might need to call "RegisterStartupScript" if you need the 
    // JS variables earlier in the page. 
    cs.RegisterClientScriptBlock(this.GetType(), 
           "SetValues", 
           valueFromCodeBehind, 
           true); 
    } 
} 

2: Sở hữu trên số- phía sau, được tham chiếu ở phía trang:

Trong trang .aspx của bạn, như sau:

<script type="text/javascript"> 
    var myValue = <%=ValueFromCodeBehind%> 
</script> 

Trong mã của bạn phía sau, bạn khai báo các biến, và đảm bảo nó được thiết lập:

public partial class Testing: System.Web.UI.Page { 
    protected string ValueFromCodeBehind; 

    protected void Page_Load(object sender, EventArgs e) { 

    ValueFromCodeBehind = 
       Server.HtmlEncode(Server.UrlDecode(Request.QueryString["id"])); 
    } 
0

này sẽ đăng ký kịch bản của bạn ở phía trên cùng của trang.

ClientScriptManager.RegisterClientScriptBlock Method (Type, Key as String, Script as String) 

Thêm loại và khóa đảm bảo rằng chỉ một phiên bản của tập lệnh được thêm vào trang cho loại và khóa đó.

Trong quá tải này của phương thức RegisterClientScriptBlock, bạn phải đảm bảo rằng tập lệnh được cung cấp trong tham số tập lệnh được gói trong khối phần tử.

Các vấn đề liên quan