我在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