我有一个 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);
Deal控件非常简单:
<%@ 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");
如果我注释掉用户控件的 Page_Load 代码,重新编译,然后取消注释代码并重新编译,一切都会再次正常。
谁能告诉我发生了什么事?