2011-03-31 13 views
5

jquery ajax kullanarak bir kullanıcı denetimi yüklemek istiyorum. Bulunabildiğim bir kişi, genel işleyiciden kullanıcı denetimi yüklemek. Kimse bana yardım et. Burada kontrolü aramak için kullanıyorum ajax kodu. Burada Genel işleyici kullanarak usercontrol nasıl yükleyebiliriz?

<script type="text/javascript"> 
function fillSigns() { 
       $.ajax({ 
        url: "usercontrolhandler.ashx?control=signs.ascx", 
        context: document.body, 
        success: function (data) {      
         $('#signdiv').html(data); 
        } 
       }); 
      } 
</script> 

ve

Bu kod, aşağıda gösterilmiş olan nesne referans bulunamadı hata yükseltir işleyici dosyasında

public void ProcessRequest(HttpContext context) 
    { 
     context.Response.ContentType = "text/plain"; 
     Page page = new Page(); 
     UserControl ctrl = (UserControl)page.LoadControl("~/" + context.Request["control"] + ".ascx");  
     page.Form.Controls.Add(ctrl); 

     StringWriter stringWriter = new StringWriter(); 
     HtmlTextWriter tw = new HtmlTextWriter(stringWriter); 
     ctrl.RenderControl(tw); 
     context.Response.Write(stringWriter.ToString()); 
    } 

içinde kodudur. Bu page.Form görünüyor

page.Form.Controls.Add(ctrl); 
+0

yoktur. Bu kodu kaldır ve iyi olacaksın. –

cevap

3

bir null başvuru özel var, bu yüzden burada null olduğunu.

StringWriter output = new StringWriter(); 
HttpContext.Current.Server.Execute(page, output, false); 

Ve nihayet kapsar Scott Guthrie tarafından Tip/Trick: Cool UI Templating Technique to use with ASP.NET AJAX for non-UpdatePanel scenarios eşya üzerine bir göz atın: Ayrıca Sayfa işlemek için HttpServerUtility.Execute yöntemi kullanabilirsiniz

page.Controls.Add(ctrl); 

: yerine sayfanın denetim koleksiyonu için kullanıcı denetimi ekleyebilirsiniz senin sorunun.

1

bu deneyin: o

Page page = new Page {ViewStateMode = ViewStateMode.Disabled}; 
HtmlForm form = new HtmlForm { ViewStateMode = ViewStateMode.Disabled }; 
form.Controls.Add(ctrl); 
page.Controls.Add(form); 

: `UserControl` işlemek için bir` Page` nesnesi oluşturmak için gerek

StringWriter stringWriter = new StringWriter(); 
HtmlTextWriter tw = new HtmlTextWriter(stringWriter); 
page.RenderControl(tw); 
context.Response.Write(stringWriter.ToString());