Загрузить usercontrol с jquery с обработчиком
Я хочу динамически загружать usercontrol с помощью jquery. сначала я создаю этот UserControl в корневом веб-сайте:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="UcProduct.ascx.cs" Inherits="UC_UcProduct" %>
<p> Mohsen</p>
после этого я создаю страницу.aspx и пишу этот код для загрузки UserControl
<head runat="server">
<title></title>
<script src="Script/jquery-1.7.1.min.js"></script>
<style>
body {
font-family: 'B Mitra', Tahoma, Arial;
font-size: 20px;
text-shadow: 4px 4px 4px #aaa;
}
</style>
<script>
$(function () {
$("#UserCtrl").load("UcProduct.ascx");
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="UserCtrl">
111
</div>
</form>
</body>
После этого я создаю класс в App_code
namespace Eshop
{
public class jQueryHandler : IHttpHandler
{
public bool IsReusable
{
get { throw new NotImplementedException(); }
}
public void ProcessRequest(HttpContext context)
{
using (var dummyPage = new Page())
{
dummyPage.Controls.Add(GetControl(context));
context.Server.Execute(dummyPage, context.Response.Output, true);
}
}
private Control GetControl(HttpContext context)
{
// URL path given by load(fn) method on click of button
string strPath = context.Request.Url.LocalPath;
UserControl userctrl = null;
using (var dummyPage = new Page())
{
userctrl = dummyPage.LoadControl(strPath) as UserControl;
}
// Loaded user control is returned
return userctrl;
}
}
}
наконец, добавьте этот раздел в web.config
<httpHandlers>
<add verb="*" path="*.ascx" type="Eshop.jQueryHandler,App_Code" />
</httpHandlers>
при запуске страницы Default.aspx не загружается userControl, а при проверке с помощью firebug я получаю это сообщениеПомогите мне, пожалуйста. Спасибо всем.
1 ответ
Решение
Я думаю, это проблема расширения файла. Серверу не разрешено обслуживать файлы ascx.
Вы можете попробовать:
<httpHandlers>
<remove verb="*" path="*.ascx"/>
<add verb="*" path="*.ascx" type="Eshop.jQueryHandler,App_Code" />
</httpHandlers>
или же
объявив обработчик для path="*.myascx"
, а затем загрузить соответствующий .ascx
в обработчике (это изменит ваши Ajax-вызовы URL)