Asp.net

通過 jQuery 載入 ascx

  • December 10, 2013

有沒有辦法通過 jQuery 載入 ascx 文件?

更新

感謝@Emmett 和@Yads。我正在使用帶有以下 jQuery ajax 程式碼的處理程序:

jQuery.ajax({
   type: "POST",  //GET
   url: "Foo.ashx",
   data: '{}',
   contentType: "application/json; charset=utf-8",
   dataType: "json",
   success: function (response)
   {
       jQuery('#controlload').append(response.d); // or response
   },
   error: function ()
   {
       jQuery('#controlload').append('error');
   }
});

但我得到一個錯誤。我的程式碼錯了嗎?

另一個更新:我正在使用

error: function (xhr, ajaxOptions, thrownError)
{
   jQuery('#controlload').append(thrownError);
}

這就是我得到的:

JSON 無效:

測試 =>(此測試是我的 ascx 中的標籤)

和錯誤後我的 ascx 文件!!!

另一個更新

我的 ascx 文件是這樣的:

<asp:DropDownList ID="ddl" runat="server" AutoPostBack="true">
   <asp:ListItem>1</asp:ListItem>
   <asp:ListItem>2</asp:ListItem>
</asp:DropDownList>
<asp:Label ID="Label1" runat="server">Test</asp:Label>

但是當呼叫ajax時我在asp中得到這個錯誤::(

“DropDownList”類型的控制項“ctl00_ddl”必須放在帶有 runat=server 的表單標記內。

感謝@Yads。但他的解決方案僅適用於 html 標籤。

建構 Emmett 的解決方案

public class FooHandler : IHttpHandler
{

   public void ProcessRequest(HttpContext context)
   {
       context.Response.ContentType = "text/html";
       context.Response.Write(RenderPartialToString("Foo.ascx"));
   }

   private string RenderPartialToString(string controlName)
   {
       Page page = new Page();
       Control control = page.LoadControl(controlName);
       page.Controls.Add(control);

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

       return writer.ToString();
   }

   public bool IsReusable
   {
       get
       {
           return false;
       }
   }
}

使用以下 jquery 請求

jQuery.ajax({
   type: "POST",  //GET
   url: "Foo.ashx",
   dataType: "html",
   success: function (response)
   {
       jQuery('#controlload').append(response); // or response
   },
   error: function ()
   {
       jQuery('#controlload').append('error');
   }
});

引用自:https://stackoverflow.com/questions/4597103