为什么我的ASP.NET UserControl类型变得无法访问?

时间:2012-09-26 09:57:08

标签: asp.net webforms

我有一个ASP.NET网站,其中包含一个用户控件,该控件使用以下代码以编程方式添加到ASP.NET Web表单中:

var control = (Deal)LoadControl("Deal.ascx");
control.ImageFile = dealNode.SelectSingleNode("thumbnail").InnerText;
control.ProductName = dealNode.SelectSingleNode("product").InnerText;
control.PriceText = dealNode.SelectSingleNode("price").InnerText;
DealList.Controls.Add(control);

交易控制非常简单:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Deal.ascx.cs" Inherits="Deal" %>
<div class="deal">
    <img id="DealImage" runat="server" class="dealimage" />
    <div class="dealtext"><asp:Label ID="DealLabel" runat="server"></asp:Label></div>
    <div class="dealprice"><asp:Label ID="DealPriceLabel" runat="server"></asp:Label></div>
</div>

背后的代码:

public string ImageFile { get; set; }
public string ProductName { get; set; }
public string PriceText { get; set; }

protected void Page_Load(object sender, EventArgs e)
{
    this.DealImage.Src = "images/" + ImageFile;
    this.DealLabel.Text = ProductName;
    this.DealPriceLabel.Text = PriceText;
}

当我在Visual Studio 2010中运行网站时,它通常可以正常工作。但是,每隔一段时间(通常在登记或重新启动VS2010之后),它就会放弃而不会编译。我收到错误:

The type or namespace name 'Deal' could not be found (are you missing a using directive or an assembly reference?)

问题在于行中的演员:

var control = (Deal)LoadControl("Deal.ascx");

如果我注释掉usercontrol的Page_Load代码,重新编译,然后取消注释代码并重新编译,一切都会好的。

谁能告诉我发生了什么?

1 个答案:

答案 0 :(得分:2)

尝试在页面标记内添加对控件的引用:

<%@ Reference Control="MyUserControl.ascx" %>

请参阅here