2009-05-29 38 views
14

Tôi cần chèn một chút Javascript vào quá trình khi một Biểu mẫu Web được gửi, nhưng sau khi xác thực phía máy khách sẽ diễn ra.RegisterOnSubmitStatement sau khi xác thực phía máy khách

RegisterOnSubmitStatement có vẻ như đã đặt javascript trước khi xác thực.

Bất kỳ ai cũng biết cách hiển thị sau?

Giải pháp phát hiện: Trong một điều khiển web, tôi đặt một cái gì đó như thế này:

protected override OnInit(EventArgs e) { 
    Page.SaveStateComplete += new EventHandler(RegisterSaveStuff); 
    base.OnInit(e); 
} 

void RegisterSaveStuff(object sender, EventArgs e) { 
    Page.ClientScript.RegisterOnSubmitStatement(typeof(Page), "name", "JS code here"); 
} 
+0

Xin lỗi vì đã làm sống lại một zombie, nhưng tôi nghĩ nó hơi ít hacky để sử dụng các sự kiện PreRenderComplete. –

Trả lời

5

Sau khi một số nghiên cứu trực tuyến và chơi đùa với nó, tôi đã tìm ra rằng bạn có thể làm điều đó bằng cách gắn vào SaveStateComplete của Trang biến cố. Tôi đoán báo cáo xác nhận gửi được đăng ký trong sự kiện PreRender, vì vậy nếu bạn đăng ký nó sau đó (trong sự kiện SaveStateComplete), bạn có thể nhận được nó sau đó.

Bạn phải đăng ký lại, nhưng đó không phải là vấn đề lớn vì tôi không dựa vào ViewState cho JS của tôi.

+2

Thật tuyệt vời. Vui lòng đăng một số mã. – ichiban

+0

Giải pháp được thêm vào câu hỏi để dễ đọc – Jared

8

điều đó đúng, RegisterOnSubmitStatement KHÔNG LÀM VIỆC trong hàm init. Nó sẽ được gọi sau khi trong chu kỳ lige trang. tôi điều đúng nơi do là:

"PreRenderComplete"

protected override OnInit(EventArgs e) 
{ 
    Page.PreRenderComplete+= new EventHandler(Page_PreRenderComplete); 
    base.OnInit(e); 
} 

void Page_PreRenderComplete(object sender, EventArgs e) 
{ 
    Page.ClientScript.RegisterOnSubmitStatement(typeof(Page), "name", "JS code here"); 
} 
Các vấn đề liên quan