私はVS2010にWebサイトプロジェクトを持っています。要するに、1つのコントロール「BasketMenuItem.ascx」を使用して、カートの詳細をページの上部に要約して表示しています。何
ナビゲーションをレンダリングするコードには、次のものがあります。
<tp:BasketMenuItem ID="basketMenuItem" runat="server" />
次に、すべての製品ページに X 個の製品アイテムをカートに追加するボタンがある別のコントロールを用意します。アイテムを追加するときに、javascript を使用してカートを強調表示し、「BasketMenuItem」コントロールを更新して、正しい詳細が表示されるようにします。
私は次のようなことができると思いました(「usercontrols_Global_BasketMenuItem」はBasketMenuItemコントロールのクラスです):
(usercontrols_Global_BasketMenuItem)Page.FindControl("basketMenuItem").LoadItems();
ただし、次のエラーが表示されます。
"The Type or Namespace Name BasketMenuItem could not be found (are you missing a using directive or an assembly reference?)"
これを回避する方法がわかりません。簡単に言うことができないので、何を含める必要があるのか わかりません:
using usercontrols_Global_BasketMenuItem;
また、次のように ClassName 属性を制御ファイルに追加しようとしました。
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="BasketMenuItem.ascx.cs" ClassName="BasketMenuItem" Inherits="usercontrols_Global_BasketMenuItem" %>
それでも、私はまだそれを参照することができません。
コード
まず、BasketMenuItem コントロールがあります。ascx と ascx.cs の両方。これには、現在のバスケットの内容をロードするメソッドが含まれています。"LoadItems()".
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="BasketMenuItem.ascx.cs" ClassName="BasketMenuItem" Inherits="BasketMenuItem" %>
public partial class BasketMenuItem : System.Web.UI.UserControl
{
//...
}
次に、Menu コントロールがあります。これは、バスケット コントロールがナビゲーションのページに配置される場所です。
<ul>
<li>...</li>
<li>...</li>
<li>...</li>
<!-- Cart -->
<tp:BasketMenuItem ID="basketMenuItem" runat="server" />
</ul>
最後に、次のように定義された ListItems コントロールがあります。このコントロールには、アイテムをカートに追加するためのボタンが含まれています。ここでは、ページ上の BasketMenuItem コントロールを見つけて、その "LoadItems()" メソッドを呼び出して更新します。
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ListItems.ascx.cs" Inherits="ListItems" %>
public partial class ListItems : System.Web.UI.UserControl
{
//...
}
名前空間が指定されていません。私が読んだことから、ASP 名前空間で BasketItem コントロールを見つけることができると思います。でもできないんです。