1

jqueryでユーザーコントロールを動的にロードしたい。まず、ルート Web サイトでこの 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 で確認すると、このメッセージが表示されます ここに画像の説明を入力 。助けてください。皆さんありがとう。

4

1 に答える 1

1

ファイル拡張子の問題だと思います。サーバーはascxファイルを提供できません。

あなたは試すことができます:

<httpHandlers>
   <remove verb="*" path="*.ascx"/>
  <add verb="*" path="*.ascx" type="Eshop.jQueryHandler,App_Code" />
</httpHandlers>

また

のハンドラーを宣言してからpath="*.myascx"、対応するハンドラーをロードし.ascxます(これにより、ajax呼び出しのURLが変更されます)

于 2013-02-08T12:53:17.383 に答える