2012-09-26 61 views
1

我有一個ASP.NET網站,包括所編程方式添加到ASP.NET Web窗體用戶控件,使用此代碼:爲什麼我的ASP.NET UserControl類型不能訪問?

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中的代碼,重新編譯,然後取消註釋代碼並重新編譯,一切都OK一次。

誰能告訴我發生了什麼事?

回答

2

嘗試添加引用頁面標記的內部控制:

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

here

+0

,似乎工作!我不明白的是爲什麼它在沒有參考的情況下工作(間歇性地失敗)。 – Richard

相關問題