我在VS2010中有一個網站項目,簡而言之,我使用一個控件「BasketMenuItem.ascx」來顯示購物車詳細信息,總結在頁面頂部。什麼引用C#控制在另一個類的後面的代碼
在代碼來呈現導航,我有:
<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;
我也嘗試添加一個類的名稱屬性來控制文件,如下所示:
<%@ 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控件。但是我不能。
嗨周杰倫,謝謝你的迴應。該類的名稱實際上是「usercontrols_Global_BasketMenuItem」,因爲這是自動生成的。控件位於/ usercontrols/Global /文件夾中。我將這個類重命名爲「BasketMenuItem」,並相應地更新了ascx文件。沒有默認的命名空間,所以作爲一個測試,我試圖向代碼隱藏中添加「namespace MyControls」(並更新控件的「inherits」屬性。然後在其他文件中嘗試使用using語句,但是「MyControls namespace wouldn' t出現 – cast01 2012-08-16 13:32:11
只是爲了仔細檢查:這兩個用戶控件是否在同一個項目中?(缺少一個項目引用可以解決這個問題) – 2012-08-16 13:53:25
是的,他們在同一個網站項目中,我在某處讀取默認名稱空間對於控件是ASP,但事件鍵入「ASP」並沒有提出任何有關BasketMenuItem的建議 – cast01 2012-08-16 14:00:16